pack コマンド (NuGet CLI)
適用対象: パッケージの作成 • サポートされているバージョン: 2.7 以降
指定した .nuspec またはプロジェクト ファイルに基づいて NuGet パッケージを作成します。 dotnet pack
コマンド (「dotnet コマンド」を参照) と msbuild -t:pack
(「MSBuild ターゲット」を参照) を代替候補として使用できます。
重要
PackageReference ベースのプロジェクトには dotnet pack
または msbuild -t:pack
を使用します。 NuGet バージョン 6.5 以降では、これらのプロジェクト タイプをパックしようとすると pack コマンドがエラーになります。 以前のバージョンではパックが試みられますが、生成されたパッケージが正しくない可能性があります。
Mono では、プロジェクト ファイルからのパッケージの作成はサポートされていません。 nuget.exe 自体は Windows パス名を変換しないため、.nuspec
ファイル内のローカル以外のパスを Unix スタイルのパスに調整する必要もあります。
使用方法
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
パッケージの作成時に除外する 1 つまたは複数のワイルドカード パターンを指定します。 複数のパターンを指定するには、-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
パッケージのビルド後に、パックでパッケージの分析を実行しないことを指定します。
-OutputDirectory
作成されたパッケージを保存するフォルダーを指定します。 フォルダーが指定されない場合、現在のフォルダーが使用されます。
-OutputFileNamesWithoutVersion
バージョンを指定せずにパッケージ出力名をコマンドで準備する必要があるかどうかを指定します。
-PackagesDirectory
パッケージ フォルダーを指定します。
-p|-Properties
他のオプションの後に、コマンド ラインの最後に指定する必要があります。 プロジェクト ファイル内の値をオーバーライドするプロパティのリストを指定します。プロパティ名については、「MSBuild プロジェクトの共通プロパティ」を参照してください。 ここの Properties 引数は、token=value ペアをセミコロンで区切ったリストです。
.nuspec
ファイルで$token$
が出現するたびに、指定された値で置き換えられます。 値には、引用符で囲まれた文字列を指定できます。 "Configuration" プロパティの既定値は "Debug" であることに注意してください。 Release の構成に変更するには、-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
コマンドは、developmentDependency
属性が true
に設定されている packages.config
の 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
は含まれません。
pack 警告の抑制
パック操作中にすべての 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"
Note
SDK スタイルのプロジェクトでは pack
コマンドはサポートされていません。これらのプロジェクトをパックするには、代わりに dotnet pack
または msbuild -t:pack
を使用します。