打包 Razor 类库

已完成

你经常执行的一项任务是打包库供其他开发人员重用。 NuGet 打包使得任何位置的任何开发人员都可轻松获取所有 .NET 引用并为他们的应用程序正确配置。

在上一单元中,你生成了模式对话框组件并在自己的应用程序中使用它。 现在需要在其他应用程序中重用它。

在本单元中,你将了解配置 Razor 类库作为 NuGet 包所必要的步骤。 你还将了解如何使用包存储库服务(如 NuGet.org 或 GitHub 存储库)打包库以供分发。

配置 Razor 类库进行 NuGet 打包

.NET 生态系统使定义其他开发人员识别和使用你的组件所必要的属性变得简单。 可以在 Razor 类库的项目文件 (*.csproj) 中定义所有这些属性,以便它们可随之移动并在库更新时适当更新。

可以在 Visual Studio 的“项目属性”-“包”对话框中配置用于标识包的字段,你也可自己直接在 *.csproj 文件中创建条目。

创建包所需的四个字段是:

字段 说明 默认值
PackageId 在整个 NuGet 存储库中唯一的包标识符。 库的 AssemblyName
Version “Major.Minor.Patch[-Suffix]”形式的特定版本号,其中“-Suffix”可选地定义预发行版本。 1.0.0
Authors 包的作者。 AssemblyName
Company 负责创建和发布包的公司的名称。 AssemblyName

其中一些字段具有默认值,发布公司名称为“MyFirstLibrary”的包可能看起来很有趣。 强烈建议显式定义这些值。

在上一单元中,你了解了 Razor 类库的静态内容在 _content/[PACKAGE_ID]/ 处提供,现在你可以看到 PackageId 值的配置位置。

已配置这些值的示例项目文件可能如下所示:

<PropertyGroup>
    <PackageId>Learn.MyFirstLibrary</PackageId>
    <Version>0.1.0-alpha1</Version>
    <Authors>Susan Developer, Terry Programmer</Authors>
    <Company>AdventureWorks</Company>
</PropertyGroup>

生成项目时,你还可以将其配置为生成 NuGet 包,方法是在 Visual Studio 的“项目属性”对话框中选择“在生成时生成 NuGet 包”选项,或在其他包字段旁添加一个 GeneratePackageOnBuild 条目,如下所示:

<GeneratePackageOnBuild>True</GeneratePackageOnBuild>

可以配置许多可选的项目属性,包括:

  • 适用于在 NuGet 存储库中显示的 Description
  • 版权声明
  • 许可信息
  • 图标
  • 项目 URL

有关属性的完整列表,请查看关于 MSBuild 打包目标的 Microsoft 文档。

打包库

将库配置写入 *.csproj 文件后,可通过在 Visual Studio 中右键单击该项目并选择“打包”命令或在项目文件夹中运行以下命令来生成 NuGet 包:

dotnet pack

dotnet pack 命令将生成一个具有 PackageID 和版本号的包,并将其放在标准项目生成输出文件夹中。

知识检查

1.

PackageId 的默认值是什么项目属性?