pack 命令 (NuGet CLI)
适用于:包创建 • 支持的版本:2.7 及以上版本
基于指定的 .nuspec 或项目文件创建 NuGet 包。 dotnet pack
命令(请参阅 dotnet 命令)和 msbuild -t:pack
(请参阅 MSBuild 目标)可用作备用命令。
重要
将 dotnet pack
或 msbuild -t:pack
用于基于 PackageReference 的项目。 从 NuGet 版本 6.5 及以上版本开始,尝试打包这些项目类型时,pack 命令会出错。 先前版本会尝试打包,但生成的包可能不正确。
在 Mono 中,不支持从项目文件创建包。 还需将 .nuspec
文件中的非本地路径调整为 UNIX 式路径,因为 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)。-Exclude
指定在创建包时要排除的一个或多个通配符模式。 若要指定多个模式,请重复使用 -Exclude 标志。 请参阅以下示例。
-ExcludeEmptyDirectories
生成包时,阻止包含空目录。
-ForceEnglishOutput
(3.5+) 使用固定的、基于英语的区域性强制 nuget.exe 运行。
-?|-help
显示此命令的帮助信息。
-IncludeReferencedProjects
指示生成的包应包含引用的项目,以将其作为依赖项或包的一部分。 如果引用的项目具有与项目同名的对应
.nuspec
文件,则将引用的项目添加为依赖项。 否则,将引用的项目添加为包的一部分。-InstallPackageToOutputPath
指定该命令是否应准备包输出目录以支持作为源进行共享。
-MinClientVersion
为已创建的包设置 minClientVersion 属性。 此值将替代
.nuspec
文件中现有 minClientVersion 属性(如果有)的值。-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
阻止默认排除以点开头的 NuGet 包文件、文件和文件夹,例如
.svn
和.gitignore
。-NonInteractive
不为用户输入或确认显示提示。
-NoPackageAnalysis
指定 pack 不应在生成包后运行包分析。
-OutputDirectory
指定在其中存储已创建包的文件夹。 如果未指定文件夹,则使用当前文件夹。
-OutputFileNamesWithoutVersion
指定该命令是否应准备不带版本的包输出名称。
-PackagesDirectory
指定包文件夹。
-p|-Properties
应在命令行上的其他选项之后最后一个显示。 指定要覆盖项目文件中的值的属性列表;有关属性名称,请参阅通用 MSBuild 项目属性。 此处的 Properties 参数为 token=value pairs 的列表(用分号分隔),其中
.nuspec
文件中出现的每个$token$
均会用给定值替换。 值可以是用引号括起来的字符串。 请注意,对于“Configuration”属性,默认值为“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
命令会忽略 packages.config
中将 developmentDependency
属性设为 true
的 package
条目。 这些条目不会作为依赖项而包含在创建的包中。
例如,请考虑源项目中的以下 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
创建的包将依赖于 jQuery
和 microsoft-web-helpers
,但不依赖 netfx-Guard
。
不显示打包警告
虽然推荐在打包操作期间解决所有 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"
注意
不支持针对 SDK 式项目的 pack
命令,而应改用 dotnet pack
或 msbuild -t:pack
来打包这些项目。