pack 命令 (NuGet CLI)

适用于: 包创建 • 支持的版本: 2.7+

基于指定的 .nuspec 或项目文件创建 NuGet 包。 该 dotnet pack 命令(请参阅 dotnet 命令)和 msbuild -t:pack (请参阅 MSBuild 目标)可用作备用命令。

Important

使用 dotnet packmsbuild -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(默认值)、quietdetailed

  • -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 packmsbuild -t:pack打包这些项目。