创建 NuGet 包

已完成

打包 Razor 类库时,你有一个二进制可交付结果,其他 Blazor 项目可以引用,并且其中的组件可用于这些项目。

在前面的单元中,你创建了一个具有模式组件的 Razor 类库,该组件为 Blazor 应用程序提供模式对话框窗口。 若要共享该组件以便在其他应用程序中使用,需要将其打包并放置在存储库或其他开发人员可以获取它的文件夹中。

在本单元中,将更新该项目并生成 NuGet 包。 最后,将该 NuGet 包部署到 Blazor 服务器应用程序。

将包属性添加到 FirstClassLibrary

首先,更新 FirstClassLibrary 项目的属性,使其可以打包为 NuGet 包以便部署。

  1. 打开 FirstClassLibrary 项目的项目文件。 双击 Visual Studio 解决方案资源管理器中的项目,或在 Visual Studio Code 中打开 FirstClassLibrary.csproj 文件。

  2. 在文件顶部附近,在带 <PropertyGroup> 标记的节中,在结束 </PropertyGroup> 标记之前添加以下内容:

        <PackageId>My.FirstClassLibrary</PackageId>
        <Version>0.1.0</Version>
        <Authors>YOUR NAME</Authors>
        <Company>YOUR COMPANY NAME</Company>
        <Description>This is a Razor component library with a cool modal window component.</Description>
      </PropertyGroup>
    

    此代码将 Razor 类库定义为具有 <PackageId> “My.FirstClassLibrary”和 <Version> 0.1.0。 在这两个字段中输入自己的名称和公司名称。

打包库以供重复使用

接下来,在命令行上运行 .NET 命令以打包 Razor 类库,以便解决方案外部的其他应用程序可以引用它。

可以在持续集成过程中运行这些步骤来打包库并将其部署到 NuGet.org、GitHub 存储库或组织要共享的其他位置。

FirstClassLibrary.csproj 文件所在的同一文件夹中,运行以下命令:

dotnet pack

此命令将名为 My.FirstClassLibrary.0.1.0.nupkg 的文件写入 bin/Release 文件夹。

在 MyBlazorApp 应用程序中添加对 NuGet 包的引用

已在 MyBlazorApp 应用程序中引用 FirstClassLibrary 项目,因为它与 Web 应用程序位于同一文件夹结构中。

现在,撤消该项目引用,并添加对之前创建的 NuGet 包的引用。

以下步骤不描述典型配置。 与需要引用库项目的应用程序驻留在同一个文件夹或解决方案中的库项目可直接引用此项目,如前一练习所见。

  1. 双击 Visual Studio 中的 MyBlazorApp 项目名称或在 Visual Studio Code 中打开文件,打开 MyBlazorApp.csproj 文件。

  2. MyBlazorApp.csproj 文件中,删除以下行:

    <ProjectReference Include="..\FirstClassLibrary\FirstClassLibrary.csproj" />

  3. MyBlazorApp.csproj 所在的同一文件夹中,运行以下命令:

    dotnet add package My.FirstClassLibrary -s ../FirstClassLibrary/bin/Release
    

    此命令获取之前创建的 NuGet 包,在本地 NuGet 包缓存中安装副本,然后在 MyBlazorApp.csproj 文件中添加对该包的引用。

检查你的工作

新包是否已正确安装? 是否可以启动 FirstServer 应用程序并在应用程序启动时看到模式窗口?

接下来了解一下:

  1. 通过运行以下命令,在 Visual Studio 中选择 F5 或在 MyBlazorApp 文件夹中启动 MyBlazorApp 应用程序:

    dotnet run

  2. 在浏览器中,转到 MyBlazorApp 应用程序的主页: https://localhost:5000

    是否显示 “我的第一个模式”对话框 ? 如果是,那么恭喜你! 已成功打包并部署 FirstClassLibrary 项目。 现在,任何地方的应用程序都可以通过引用新创建的 NuGet 包来使用模式窗口组件。