この記事は: ✔️ .NET 6 SDK 以降のバージョンに適用されます
名前
dotnet pack - コードを NuGet パッケージにパックします。
概要
dotnet pack [<PROJECT>|<SOLUTION>|<NUSPEC>|<FILE>]
[--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
[--disable-build-servers] [--force] [--include-source] [--include-symbols]
[--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [-p|--property:<PROPERTYNAME>=<VALUE>]
[--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version <VERSION>] [--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Description
dotnet pack コマンドは、プロジェクトをビルドし、NuGet パッケージを作成します。 このコマンドの結果は、NuGet パッケージ (つまり .nupkg ファイル) です。
.NET 10 以降では、.nuspec ファイルまたはファイル ベースのアプリ (.cs ファイル) を引数として直接渡すこともできます。
.nuspec ファイルを渡すと、dotnet packはプロジェクト ファイルを必要とせず、MSBuild を実行せずに.nuspec ファイルからパッケージを作成します。 ファイル ベースのアプリを渡すと、 dotnet pack プロジェクト ファイルなしでパックされます。
デバッグ シンボルを含むパッケージを生成する場合は、次の 2 つのオプションを使用できます。
-
--include-symbols- シンボル パッケージが作成されます。 -
--include-source- ソース ファイルを含むsrcフォルダーを含むシンボル パッケージが作成されます。
パックされたプロジェクトの NuGet 依存関係が .nuspec ファイルに追加されるため、パッケージのインストール時に適切に解決されます。 パックされたプロジェクトに他のプロジェクトへの参照がある場合、他のプロジェクトはパッケージに含まれません。 現在、プロジェクト間の依存関係がある場合は、プロジェクトごとにパッケージが必要です。
既定では、プロジェクト dotnet pack 最初にビルドされます。 この動作を回避する場合は、 --no-build オプションを渡します。 このオプションは、多くの場合、コードが以前にビルドされたことがわかっている継続的インテグレーション (CI) ビルド シナリオで役立ちます。
注
場合によっては、暗黙的なビルドを実行できません。 これは、ビルドターゲットとパックターゲットの間の循環依存関係を回避するために、 GeneratePackageOnBuild が設定されている場合に発生する可能性があります。 ロックされたファイルまたはその他の問題がある場合も、ビルドが失敗する可能性があります。
注
Web プロジェクトはパックできません。
暗黙的な復元
復元を必要とするすべてのコマンド (dotnet restore、dotnet new、dotnet build、dotnet run、dotnet test、dotnet publish など) によって暗黙的に実行されるため、dotnet pack を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。
NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。
このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。
-s のような短い形式のオプションはサポートされていません。
ワークロード マニフェストのダウンロード
このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。
論争
PROJECT | SOLUTION | NUSPEC | FILE
パックするプロジェクト、ソリューション、 .nuspec ファイル、またはファイル ベースのアプリ。
PROJECTは、.csproj、.vbproj、または.fsprojファイルへのパス、またはプロジェクト ファイルを含むディレクトリへのパスです。SOLUTIONは、ソリューション ファイル (.slnまたは.slnx拡張子) へのパス、またはソリューション ファイルを含むディレクトリへのパスです。NUSPECは、.nuspecファイルへのパスです。 .NET 10 以降で使用できます。FILEは、ファイル ベースのアプリ (対応するプロジェクト ファイルのない C# ファイル) へのパスです。 .NET 10 以降で使用できます。 詳細については、「 ファイル ベースの C# アプリをビルドする」を参照してください。指定しない場合、コマンドは現在のディレクトリでプロジェクトまたはソリューション ファイルを検索します。
オプション
-
--artifacts-path <ARTIFACTS_DIR>実行されたコマンドからのすべてのビルド出力ファイルは、指定されたパスの下のサブフォルダーに配置され、プロジェクトで区切られます。 詳細については、「 Artifacts 出力レイアウトを参照してください。 このオプションと指定された値は、
dotnet build --no-restoreやdotnet publish --no-buildを使用する場合など、別のdotnetコマンドの出力に依存する任意のdotnetコマンドで明示的にカスケードする必要があります。 .NET 8 SDK 以降で使用できます。 -
-c|--configuration <CONFIGURATION>ビルド構成を定義します。 .NET 8 SDK 以降のバージョンで開発している場合、TargetFramework が
net8.0以降のバージョンに設定されているプロジェクトに対して、既定でコマンドはRelease構成を使用します。 既定のビルド構成は、以前のバージョンの SDK と以前のターゲット フレームワークに対してDebugされます。 プロジェクト設定またはこのオプションを使用して、既定値をオーバーライドできます。 詳細については、「dotnet publish」リリース構成 を使用し、'dotnet pack' でリリース構成を使用を参照してください。 -
--disable-build-servers永続的なビルド サーバーを無視するようにコマンドを強制します。 このオプションは、ビルド キャッシュのすべての使用を無効にする一貫した方法を提供します。これにより、ビルドが最初から強制的に実行されます。 キャッシュに依存しないビルドは、何らかの理由でキャッシュが破損している、または正しくない可能性がある場合に便利です。 .NET 7 SDK 以降で使用できます。
--force最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。 このフラグを指定することは、project.assets.json ファイルを削除することと同じです。
--include-source出力ディレクトリ内の通常の NuGet パッケージに加えて、デバッグ シンボル NuGet パッケージが含まれます。 ソース ファイルは、シンボル パッケージ内の
srcフォルダーに含まれています。--include-symbols出力ディレクトリ内の通常の NuGet パッケージに加えて、デバッグ シンボル NuGet パッケージが含まれます。
-
--interactiveコマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。
--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 以降のバージョンで修正されました。
-p|--property:<PROPERTYNAME>=<VALUE>1 つ以上の MSBuild プロパティを設定します。 .nuspec ファイルを直接パックする場合、プロパティは MSBuild プロパティとしてではなく、.nuspec ファイル内のトークンの置換に使用されます。 複数のプロパティを指定するには、セミコロンで区切るか、オプションを繰り返します。
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>詳細については、 NuGet パックのターゲット プロパティ と MSBuild コマンド ライン リファレンスを参照してください。
--runtime <RUNTIME_IDENTIFIER>パッケージを復元するターゲット ランタイムを指定します。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。
-s|--serviceableパッケージ内のサービス可能フラグを設定します。 詳細については、「.NET ブログ: .NET Framework 4.5.1 .NET NuGet ライブラリのMicrosoft Security更新プログラムのサポートを参照してください。
-
--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 <VERSION>作成するパッケージのバージョン。 .nuspec ファイルをパックするときに、.nuspec ファイルのバージョン番号をオーバーライドします。
注
.NET 10 以降で使用できます。
--version-suffix <VERSION_SUFFIX>VersionSuffixMSBuild プロパティの値を定義します。 このプロパティがパッケージバージョンに与える影響は、次の表に示すように、VersionプロパティとVersionPrefixプロパティの値によって異なります。値を持つプロパティ パッケージ バージョン None 1.0.0Version$(Version)VersionPrefixのみ$(VersionPrefix)VersionSuffixのみ1.0.0-$(VersionSuffix)VersionPrefixおよびVersionSuffix$(VersionPrefix)-$(VersionSuffix)--version-suffixを使用する場合は、プロジェクト ファイルにVersionPrefixではなく、Versionを指定します。 たとえば、VersionPrefixが0.1.2され、--version-suffix rc.1をdotnet packに渡すと、パッケージのバージョンが0.1.2-rc.1されます。Versionに値があり、--version-suffixにdotnet packを渡す場合、--version-suffixに指定された値は無視されます。-
-?|-h|--helpコマンドの使用方法を示した説明を出力します。
例示
現在のディレクトリにプロジェクトをパックします。
dotnet packapp1プロジェクトをパックします。dotnet pack ~/projects/app1/project.csprojプロジェクトを現在のディレクトリにパックし、結果のパッケージを
nupkgsフォルダーに配置します。dotnet pack --output nupkgs現在のディレクトリ内のプロジェクトを
nupkgsフォルダーにパックし、ビルド手順をスキップします。dotnet pack --no-build --output nupkgsプロジェクトのバージョン サフィックスが
<VersionSuffix>$(VersionSuffix)</VersionSuffix>ファイルにとして構成されている場合は、現在のプロジェクトをパックし、結果のパッケージ バージョンを指定されたサフィックスで更新します。dotnet pack --version-suffix "ci-1234"2.1.0MSBuild プロパティを使用してパッケージのバージョンをPackageVersionに設定します。dotnet pack -p:PackageVersion=2.1.0特定の ターゲット フレームワーク用にプロジェクトをパックします。
dotnet pack -p:TargetFrameworks=net45プロジェクトをパックし、復元操作に特定のランタイム (Windows) を使用します。
dotnet pack --runtime win-x64.nuspec ファイル (MSBuild プロジェクト ベースのアプローチ) を使用してプロジェクトをパックします。
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nugetNuspecFile、NuspecBasePath、およびNuspecPropertiesの使用方法については、次のリソースを参照してください。プロジェクト ファイル (.NET 10 以降) を使用せずに、.nuspec ファイルを直接パックします。
dotnet pack MyPackage.nuspec --output ./artifacts ```dotnetcli dotnet pack MyPackage.nuspec --version 1.2.3 --output ./artifacts.nuspec ファイルを直接パックし、トークンの置換 (.NET 10 以降) を使用します。
dotnet pack MyPackage.nuspec --property:Version=1.2.3 --property:Configuration=Release --output ./artifacts
.NET