dotnet pack 命令用于生成项目并创建 NuGet 包。如果指定了 --include-symbols 选项,还会额外生成一个包含调试符号的包。

项目的 NuGet 依赖被添加到 .nuspec 文件,因此安装包的时候会正确解析这些依赖。项目与项目之间的引用,被引用的项目不包含在 NuGet 包中,而是以依赖的形式存在。被引用的项目需要打包成 NuGet 包。

dotnet pack 默认先生成项目,也可以指定 --no-build 选项忽略,这在持续集成(CI)中比较常用 。关于更多持续集成的内容,请参阅 15 章。

dotnet pack 除了接收现有的选项外,还可以提供 MSBuild 属性给它。

参数

PROJECT

要打包的项目。可以是项目文件的路径也可以是目录。如果不指定,默认为当前目录。

// 当前目录
dotnet pack
// 指定项目文件
dotnet pack demo1.csproj

选项

-h|--help

打印帮助信息。

-c|--configuration {Debug|Release}

指定生成项目的配置。默认为Debug。

dotnet pack -c Release

-o|--output <OUTPUT_DIRECTORY>

指定生成的 NuGet 包的存储位置。

--runtime <RUNTIME_IDENTIFIER>

指定目标运行时。

--include-symbols

除了常规 NuGet 包外,额外生成一个带有符号的包。

--include-source

指定 NuGet 包是否包含源文件。指定该选项后会生成两个 NuGet 包,一个只包含 .dll 文件和 .runtimeconfig.json,另一个是带有符号的包,包括 .pdb 符号文件和源文件,源文件在 src 目录中。

--no-build

打包前不生成项目。

--no-dependencies

忽略项目间引用,仅生成指定要生成的根项目。

--no-restore

执行命令时不隐式调用还原。

--force

强制解析所有依赖项,即使上次还原已成功,也不例外。 这相当于删除 project.assets.json 文件。

-s|--serviceable

在包中设置可用标志。有关详情,请参阅 https://aka.ms/nupkgservicing 。

-v|--verbosity

设置命令的详细级别。 允许的值有 q[uiet]、m[inimal]、n[ormal]、d[etailed]和diag[nostic]。

另外Nuget元数据可以在项目文件中指定,详细可以参考 Nuget元数据属性

生成了nuget包,你可能需要上传的nuget服务器,关于如何上传可以参考《dotnet nuget push发布nuget包