创建 NuGet 包

已完成

打包 Razor 类库时,将提供可由 Blazor 项目引用的二进制可交付结果,并且包含的组件可在这些项目中使用。

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

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

向 FirstClassLibrary 添加包属性

首先,使用属性更新 FirstClassLibrary 项目,这些属性将允许它打包为一个 NuGet 包进行部署。

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

  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 存储库或组织共享的另一个位置。

在与 MyClassLibrary.csproj 文件相同的文件夹中,运行以下命令:

dotnet pack

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

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

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

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

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

  1. 通过以下方法打开 MyBlazorServer.csproj 文件:在 Visual Studio 中双击 MyBlazorServer 项目名称或在 Visual Studio Code 中打开该文件。

  2. 在 MyBlazorServer.csproj 文件中,移除以下行:

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

  3. 在与 MyBlazorServer.csproj 相同的文件夹中,运行以下命令:

    dotnet add package My.FirstClassLibrary -s ..\FirstClassLibrary\bin\Debug
    

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

检查你的工作

是否正确安装了新包? 能否启动 FirstServer 应用程序,并在应用程序启动时看到一个模式窗口?

接下来了解一下:

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

    dotnet run

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

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