適用対象: パッケージの作成 • サポートされているバージョン: 2.7 以降
指定した .nuspec またはプロジェクト ファイルに基づいて NuGet パッケージを作成します。
dotnet pack コマンド (dotnet コマンドを参照) とmsbuild -t:pack (MSBuild ターゲットを参照) を代替として使用できます。
Important
PackageReference ベースのプロジェクトには、dotnet packまたはmsbuild -t:packを使用します。 NuGet バージョン 6.5 以降では、これらのプロジェクトの種類をパックしようとすると pack コマンドが エラー になります。 以前のバージョンではパックが試みられますが、生成されたパッケージが正しくない可能性があります。
Mono では、プロジェクト ファイルからのパッケージの作成はサポートされていません。 nuget.exe ではパス名自体が変換されないため、.nuspec ファイル内の非ローカル パスを Unix スタイルのパスに調整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 日の 00:00:00 UTC 以降のうるう以外の秒数 (Unix 時刻とも呼ばれます) を指定することも、特殊な文字列true(既定では、現在の壁時計時刻を使用)、決定論的パッケージの作成時にファイル時刻を変更しないfalseにすることができます。Deterministicが有効になっていない場合、このオプションは無視されます。-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 の最も高いバージョンが既定で選択されます。
-NoDefaultExcludesNuGet パッケージ ファイルと、
.svnや.gitignoreなどのドットで始まるファイルとフォルダーの既定の除外を禁止します。-NonInteractiveユーザーによる入力や確認のプロンプトを表示しません。
-NoPackageAnalysisパッケージをビルドした後でパッケージ分析を実行しないように指定します。
-OutputDirectory作成されたパッケージを格納するフォルダーを指定します。 フォルダーが指定されていない場合は、現在のフォルダーが使用されます。
-OutputFileNamesWithoutVersionバージョンを指定せずにパッケージ出力名を準備する必要があるかどうかを指定します。
-PackagesDirectoryパッケージ フォルダーを指定します。
-p|-Properties他のオプションの後に、コマンド ラインの最後に表示する必要があります。 project ファイル内の値をオーバーライドするプロパティの一覧を指定します。プロパティ名については、「共通 MSBuild Project プロパティ」を参照してください。 ここでの Properties 引数は、token=value ペアのリストです。セミコロンで区切られています。ここで、
.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 コマンドは、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には依存しません。
パックの警告の抑制
パック操作中にすべての 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 を使用してこれらのプロジェクトをパックします。