适用于: 包创建 • 支持的版本: 2.7+
基于指定的 .nuspec 或项目文件创建 NuGet 包。 该 dotnet pack 命令(请参阅 dotnet 命令)和 msbuild -t:pack (请参阅 MSBuild 目标)可用作备用命令。
Important
使用 dotnet pack 或 msbuild -t:pack 用于基于 PackageReference 的项目。 从 NuGet 版本 6.5+ 开始,尝试打包这些项目类型时,pack 命令将 出错 。 早期版本会尝试打包,但生成的包可能不正确。
在 Mono 下,不支持从项目文件创建包。 还需要将文件中的非本地路径调整为 Unix 样式路径.nuspec,因为 nuget.exe 不会转换Windows路径名称本身。
用法
nuget pack <nuspecPath | projectPath> [options] [-Properties ...]
分别指定<nuspecPath>或<projectPath>.nuspec项目文件的位置。
选项
-BasePath设置 .nuspec 文件中定义的文件的基路径。
-Build指定在生成包之前应生成项目。
-ConfigFile要应用的 NuGet 配置文件。 如果未指定,则使用
%AppData%\NuGet\NuGet.Config(适用于 Windows)或是~/.nuget/NuGet/NuGet.Config或~/.config/NuGet/NuGet.Config(适用于 Mac/Linux)。-Deterministic(7.9+) 以确定性模式生成包。 这会为同一输入(源代码、项目文件、生成配置)生成位相同的包,并带有已知的时间戳警告。 了解如何
DeterministicTimestamp使用相同的日期/时间重现。-DeterministicTimestamp(7.9+) 为添加到 NuGet 包的所有文件指定用作文件修改日期/时间的时间戳。 它可以是 RFC 3339 格式的日期/时间(例如
1996-12-19T16:39:57-08:00),它可以是自 1970 年 1 月 1 日 UTC 00:00:00 UTC 以来的非跳跃秒数(也称为 Unix 时间),也可以是特殊字符串true(默认值,使用当前时钟时间),或者在false创建确定性包时不修改文件时间。 如果未Deterministic启用此选项,则忽略此选项。-Exclude指定要在创建包时排除的一个或多个通配符模式。 若要指定多个模式,请重复 -Exclude 标志。 请参阅下面的示例。
-ExcludeEmptyDirectories生成包时,防止包含空目录。
-ForceEnglishOutput(3.5+) 强制 nuget.exe 使用基于英语的固定区域性运行。
-?|-help显示此命令的帮助信息。
-IncludeReferencedProjects指示生成的包应包含引用的项目作为依赖项或包的一部分。 如果引用的项目具有与项目同名的相应
.nuspec文件,则将引用的项目添加为依赖项。 否则,将引用的项目添加为包的一部分。-InstallPackageToOutputPath指定命令是否应准备包输出目录以支持作为源共享。
-MinClientVersion为创建的包设置 minClientVersion 属性。 此值将替代文件中现有 minClientVersion 属性(如果有)
.nuspec的值。-MSBuildPath(4.0+) 指定要与命令一起使用的 MSBuild 的路径,优先
-MSBuildVersion于该路径。-MSBuildVersion(3.2+) 指定要用于此命令的 MSBuild 版本。 支持的值为 4、12、14、15.1、15.3、15.4、15.5、15.6、15.7、15.8、15.9。 默认情况下,选择路径中的 MSBuild,否则它默认为安装的最高 MSBuild 版本。
-NoDefaultExcludes防止从点(如
.svn和.gitignore)开始默认排除 NuGet 包文件和文件夹。-NonInteractive不为用户输入或确认显示提示。
-NoPackageAnalysis指定在生成包后,包不应运行包分析。
-OutputDirectory指定在其中存储已创建包的文件夹。 如果未指定任何文件夹,则使用当前文件夹。
-OutputFileNamesWithoutVersion指定命令是否应在不使用版本的情况下准备包输出名称。
-PackagesDirectory指定包文件夹。
-p|-Properties应在命令行上显示其他选项之后的最后一个。 指定替代project文件中值的属性列表;请参阅属性名称的 Common MSBuild Project Properties。 此处的 Properties 参数是由分号分隔的 token=value 对列表,其中文件中的每一个匹配项
$token$.nuspec都将替换为给定值。 值可以是引号中的字符串。 请注意,对于“配置”属性,默认值为“Debug”。 若要更改为发布配置,请使用-Properties Configuration=Release。 一般情况下,属性应与相应项目生成期间使用的属性相同,以避免潜在的奇怪行为。-SolutionDirectory指定解决方案目录。
-Suffix(3.4.4+) 将后缀追加到内部生成的版本号,通常用于追加生成或其他预发行标识符。 例如,使用
-suffix nightly将创建版本号如下1.2.3-nightly的包。 后缀必须以字母开头,以避免与不同版本的 NuGet 和 NuGet 程序包管理器的警告、错误和潜在不兼容。-SymbolPackageFormat创建符号包时,允许在
snupkg符号包和symbols.nupkg格式之间进行选择。-Symbols指定包包含源和符号。 与
.nuspec文件一起使用时,这将创建常规 NuGet 包文件和相应的符号包。 默认情况下,它会创建 旧符号包。 符号包的新建议格式为 .snupkg。 请参阅“创建符号包”(.snupkg)。-Tool指定项目输出文件应放置在
tools包中的文件夹中。-Verbosity [normal|quiet|detailed]指定输出中显示的细节量:
normal(默认值)、quiet或detailed。-Version重写文件中的
.nuspec版本号。
另请参阅 环境变量
排除开发依赖项
某些 NuGet 包作为开发依赖项很有用,可帮助创作自己的库,但不一定需要作为实际包依赖项。
该pack命令将忽略package属性developmentDependency设置为true的条目packages.config。 这些条目不会作为依赖项包含在创建的包中。
例如,请考虑源项目中的以下 packages.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="jQuery" version="1.5.2" />
<package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
<package id="microsoft-web-helpers" version="1.15" />
</packages>
对于此项目,创建的nuget pack包将依赖于但不microsoft-web-helpersnetfx-Guard依赖jQuery。
禁止显示包警告
尽管建议在包操作期间解决所有 NuGet 警告,但在某些情况下,禁止显示这些警告是合理的。
可以通过以下方式实现此目的:
nuget.exe pack package.nuspec -Properties NoWarn=NU5104
示例
nuget pack
nuget pack foo.nuspec
nuget pack foo.csproj
nuget pack foo.csproj -Properties Configuration=Release
nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5"
# Create a package from project foo.csproj, using MSBuild version 12 to build the project
nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5"
# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg
nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg
nuget pack foo.nuspec -Version 2.1.0
nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5
nuget pack Package.nuspec -exclude "*.exe" -exclude "*.bat"
注释
pack不支持 SDK 样式项目的命令,请改用dotnet pack或msbuild -t:pack打包这些项目。