dotnet pack
この記事の対象: ✔️ .NET Core 3.1 SDK 以降のバージョン
名前
dotnet pack
- NuGet パッケージにコードをパックします。
構文
dotnet pack [<PROJECT>|<SOLUTION>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--force]
[--include-source] [--include-symbols] [--interactive]
[--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
説明
dotnet pack
コマンドはプロジェクトをビルドし、NuGet パッケージを作成します。 このコマンドの結果が NuGet パッケージ (つまり、.nupkg ファイル) です。
デバッグ シンボルを含むパッケージを生成する場合、使用可能なオプションが 2 つあります。
--include-symbols
-シンボル パッケージを作成します。--include-source
-ソース ファイルが含まれたsrc
フォルダーを含むシンボル パッケージを作成します。
パックされるプロジェクトの NuGet 依存関係が .nuspec ファイルに追加されるため、パッケージのインストール時に適切に解決されます。 パックされたプロジェクトに他のプロジェクトへの参照がある場合、他のプロジェクトはパッケージに含まれません。 現時点では、プロジェクト間の依存関係がある場合は、プロジェクトごとにパッケージが必要になります。
既定では、dotnet pack
は最初にプロジェクトをビルドします。 この動作を避けたい場合は、--no-build
オプションを渡します。 このオプションは、コードが既にビルドされていることがわかっている場合の継続的インテグレーション (CI) ビルド シナリオで役立つことがよくあります。
Note
場合によっては、暗黙的なビルドは実行できません。 これは、ビルドとパック ターゲット間の循環依存を回避するため GeneratePackageOnBuild
が設定されている場合に発生します。 ロックされているファイルがある場合や、その他の問題がある場合にも、ビルドは失敗します。
パッキング プロセスのために dotnet pack
コマンドに MSBuild のプロパティを使用できます。 詳細については、NuGet の pack ターゲットのプロパティに関するページと、「MSBuild コマンド ライン リファレンス」を参照してください。 「使用例」のセクションでは、MSBuild の -p
スイッチを使用する方法を、2 つの異なるシナリオについて説明します。
Note
Web プロジェクトはパッケージ化可能ではありません。
暗黙的な復元
復元を必要とするすべてのコマンド (dotnet new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
、dotnet pack
など) によって暗黙的に実行されるため、dotnet restore
を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore
オプションを使用します。
dotnet restore
などの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore
は引き続き有用なコマンドです。
NuGet フィードの管理方法については、dotnet restore
のドキュメントをご覧ください。
このコマンドには dotnet restore
オプションを指定できますが、--source
のように長い形式で指定する必要があります。 -s
のような短い形式のオプションはサポートされていません。
ワークロード マニフェストのダウンロード
このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。
引数
PROJECT | SOLUTION
パックするプロジェクトまたはソリューション。 csproj、vbproj、または fsproj ファイル、ソリューション ファイル、またはディレクトリのいずれかへのパスです。 指定されていない場合、コマンドによりプロジェクトまたはソリューション ファイルが現在のディレクトリで検索されます。
[オプション]
--artifacts-path <ARTIFACTS_DIR>
実行されたコマンドからのすべてのビルド出力ファイルは、指定されたパスの下のサブフォルダーに配置され、プロジェクトで区切られます。 詳細については、「成果物の出力レイアウト」を参照してください。 .NET 8 SDK 以降で利用可能です。
-c|--configuration <CONFIGURATION>
ビルド構成を定義します。 .NET 8 SDK 以降のバージョンで開発している場合、TargetFramework が設定されているプロジェクトまたはそれ以降のバージョンに対して
net8.0
、既定で構成が使用Release
されます。 既定のビルド構成は、Debug
以前のバージョンの SDK と以前のターゲット フレームワーク用です。 プロジェクト設定またはこのオプションを使用して、既定値をオーバーライドできます。 詳細については、「dotnet publish」ではリリース構成を使用し、'dotnet pack' ではリリース構成を使用する方法を参照してください。
--force
最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。 このフラグを指定することは、project.assets.json ファイルを削除することと同じです。
-?|-h|--help
コマンドの使用方法を示した説明を出力します。
--include-source
通常の NuGet パッケージに加えて、デバッグ シンボル NuGet パッケージが出力ディレクトリ内に含まれます。 ソース ファイルは、シンボル パッケージ内の
src
フォルダーに含まれます。--include-symbols
通常の NuGet パッケージに加えて、デバッグ シンボル NuGet パッケージが出力ディレクトリ内に含まれます。
--interactive
コマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。 .NET Core 3.0 SDK 以降で使用できます。
--no-build
パッキングの前にプロジェクトをビルドしません。 また、
--no-restore
フラグが暗黙的に設定されます。--no-dependencies
プロジェクト間参照を無視し、ルート プロジェクトのみを復元します。
--no-restore
コマンドを実行するときに、暗黙的な復元を実行しません。
--nologo
著作権情報を表示しません。
-o|--output <OUTPUT_DIRECTORY>
指定したディレクトリにビルド済みパッケージを配置します。
.NET 7.0.200 SDK
7.0.200 SDK では、ソリューションでこのコマンドを実行するときに
--output
オプションを指定すると、CLI によってエラーが出力されます。 これは回帰であり、.NET SDK の 7.0.201 以降のバージョンで修正されました。
--runtime <RUNTIME_IDENTIFIER>
パッケージを復元するターゲット ランタイムを指定します。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。
-s|--serviceable
パッケージに処理可能フラグを設定します。 詳細については、 .NET Framework 4.5.1 での .NET NuGet ライブラリに対する Microsoft セキュリティ更新プログラムのサポートに関する .NET ブログを参照してください。
--tl:[auto|on|off]
ビルド出力にターミナル ロガーを使用するかどうかを指定します。 既定値は、ターミナル ログを有効にする前にまず環境を確認する、
auto
です。 環境チェックでは、ターミナルが最新の出力機能を使用でき、新しいロガーを有効にする前にリダイレクトされる標準出力を使用していないことを確認します。on
は、環境チェックをスキップし、ターミナル ログを有効にします。off
は、環境チェックをスキップし、既定のコンソール ロガーを使用します。ターミナル ロガーには、復元フェーズとそれに続くビルド フェーズが表示されます。 各フェーズにおいて、現在ビルド中のプロジェクトがターミナルの下部に表示されます。 ビルド中の各プロジェクトに対し、現在ビルド中の MSBuild ターゲットとそのターゲットに費やされた時間の両方が出力されます。 ビルドの詳細は、この情報を検索して確認できます。 プロジェクトのビルドが完了すると、次がキャプチャされた 1 つの "ビルドが完了しました" セクションが書き込まれます。
- ビルドされたプロジェクトの名前。
- ターゲット フレームワーク (複数ターゲットの場合)。
- そのビルドの状態。
- そのビルドの主な出力 (ハイパーリンク付き)。
- そのプロジェクトに対して生成された診断。
このオプションは、.NET 8 以降で使用できます。
-v|--verbosity <LEVEL>
コマンドの詳細レベルを設定します。 指定できる値は、
q[uiet]
、m[inimal]
、n[ormal]
、d[etailed]
、およびdiag[nostic]
です。 詳細については、LoggerVerbosityを参照してください。
--version-suffix <VERSION_SUFFIX>
VersionSuffix
MSBuild プロパティの値を定義します。 このプロパティがパッケージのバージョンに及ぼす影響は、次の表に示すように、Version
およびVersionPrefix
プロパティの値によって異なります。値を持つプロパティ パッケージのバージョン なし 1.0.0
Version
$(Version)
VersionPrefix
のみ$(VersionPrefix)
VersionSuffix
のみ1.0.0-$(VersionSuffix)
VersionPrefix
およびVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
--version-suffix
を使用する場合は、プロジェクト ファイルにVersion
ではなくVersionPrefix
を指定します。 たとえば、VersionPrefix
が0.1.2
である場合、--version-suffix rc.1
をdotnet pack
に渡すと、パッケージのバージョンは0.1.2-rc.1
になります。Version
に値が含まれている場合、--version-suffix
をdotnet pack
に渡すと、--version-suffix
に対して指定された値は無視されます。
例
現在のディレクトリのプロジェクトをパックします。
dotnet pack
app1
プロジェクトをパックします。dotnet pack ~/projects/app1/project.csproj
プロジェクトを現在のディレクトリにパックし、
nupkgs
フォルダーに生成されたパッケージを配置します。dotnet pack --output nupkgs
現在のディレクトリのプロジェクトを
nupkgs
フォルダーにパックし、ビルド ステップをスキップします。dotnet pack --no-build --output nupkgs
.csproj ファイルで
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
として構成されているプロジェクトのバージョン サフィックスで、現在のプロジェクトをパックし、結果のパッケージ バージョンを指定されたサフィックスで更新します。dotnet pack --version-suffix "ci-1234"
PackageVersion
MSBuild プロパティで2.1.0
にパッケージ バージョンを設定します。dotnet pack -p:PackageVersion=2.1.0
プロジェクトを特定のターゲット フレームワーク用にパックします。
dotnet pack -p:TargetFrameworks=net45
プロジェクトをパックし、復元操作に特定のランタイム (Windows) を使用します。
dotnet pack --runtime win-x64
.nuspec ファイルを使用してプロジェクトをパックします。
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
NuspecFile
、NuspecBasePath
、NuspecProperties
の詳細については、次のリソースを参照してください。
.NET