次の方法で共有


dotnet pack

この記事の対象: ✔️ .NET 6 SDK 以降のバージョン

名前

dotnet pack - コードを NuGet パッケージにパックします。

概要

dotnet pack [<PROJECT>|<SOLUTION>]
  [--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>] [--runtime <RUNTIME_IDENTIFIER>]
  [-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
  [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

Description

dotnet pack コマンドは、プロジェクトをビルドし、NuGet パッケージを作成します。 このコマンドの結果は、NuGet パッケージ (つまり .nupkg ファイル) です。

デバッグ シンボルを含むパッケージを生成する場合は、次の 2 つのオプションを使用できます。

  • --include-symbols - シンボル パッケージが作成されます。
  • --include-source - ソース ファイルを含む src フォルダーを含むシンボル パッケージが作成されます。

パックされたプロジェクトの NuGet 依存関係が .nuspec ファイルに追加されるため、パッケージのインストール時に適切に解決されます。 パックされたプロジェクトに他のプロジェクトへの参照がある場合、他のプロジェクトはパッケージに含まれません。 現在、プロジェクト間の依存関係がある場合は、プロジェクトごとにパッケージが必要です。

既定では、プロジェクト dotnet pack 最初にビルドされます。 この動作を回避する場合は、 --no-build オプションを渡します。 このオプションは、多くの場合、コードが以前にビルドされたことがわかっている継続的インテグレーション (CI) ビルド シナリオで役立ちます。

場合によっては、暗黙的なビルドを実行できません。 これは、ビルドターゲットとパックターゲットの間の循環依存関係を回避するために、 GeneratePackageOnBuild が設定されている場合に発生する可能性があります。 ロックされたファイルまたはその他の問題がある場合も、ビルドが失敗する可能性があります。

パッキング プロセスの dotnet pack コマンドに MSBuild プロパティを指定できます。 詳細については、「 NuGet パックのターゲット プロパティ 」および 「MSBuild Command-Line リファレンス」を参照してください。 「 例」 セクションでは、いくつかの異なるシナリオで MSBuild -p スイッチを使用する方法を示します。

Web プロジェクトはパックできません。

暗黙的な復元

復元を必要とするすべてのコマンド (dotnet restoredotnet newdotnet builddotnet rundotnet testdotnet publish など) によって暗黙的に実行されるため、dotnet pack を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。

dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。

このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。 -s のような短い形式のオプションはサポートされていません。

ワークロード マニフェストのダウンロード

このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。

論争

PROJECT | SOLUTION

パックするプロジェクトまたはソリューション。 これは、csproj、vbproj、または fsproj ファイルへのパス、またはソリューション ファイルまたはディレクトリへのパスです。 指定しない場合、コマンドは現在のディレクトリでプロジェクトまたはソリューション ファイルを検索します。

オプション

  • --artifacts-path <ARTIFACTS_DIR>

    実行されたコマンドからのすべてのビルド出力ファイルは、指定されたパスの下のサブフォルダーに配置され、プロジェクトで区切られます。 詳細については、「 Artifacts 出力レイアウトを参照してください。 .NET 8 SDK 以降で利用可能です。

  • -c|--configuration <CONFIGURATION>

    ビルド構成を定義します。 .NET 8 SDK 以降のバージョンで開発している場合、TargetFramework が Release 以降のバージョンに設定されているプロジェクトでは、既定で net8.0 構成が使用されます。 既定のビルド構成は、以前のバージョンの 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 以降のバージョンで修正されました。

  • --runtime <RUNTIME_IDENTIFIER>

    パッケージを復元するターゲット ランタイムを指定します。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。

  • -s|--serviceable

    パッケージ内のサービス可能フラグを設定します。 詳細については、「 .NET ブログ: .NET Framework 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries」を参照してください。

  • --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 プロパティの値によって異なります。

    値を持つプロパティ パッケージ バージョン
    None 1.0.0
    Version $(Version)
    VersionPrefix のみ $(VersionPrefix)
    VersionSuffix のみ 1.0.0-$(VersionSuffix)
    VersionPrefix および VersionSuffix $(VersionPrefix)-$(VersionSuffix)

    --version-suffixを使用する場合は、プロジェクト ファイルにVersionPrefixではなく、Versionを指定します。 たとえば、 VersionPrefix0.1.2 され、 --version-suffix rc.1dotnet packに渡すと、パッケージのバージョンが 0.1.2-rc.1されます。

    Versionに値があり、--version-suffixdotnet packを渡す場合、--version-suffixに指定された値は無視されます。

  • -?|-h|--help

    コマンドの使用方法を示した説明を出力します。

例示

  • 現在のディレクトリにプロジェクトをパックします。

    dotnet pack
    
  • app1 プロジェクトをパックします。

    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.0 MSBuild プロパティを使用してパッケージのバージョンをPackageVersionに設定します。

    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
    

    NuspecFileNuspecBasePath、およびNuspecPropertiesの使用方法については、次のリソースを参照してください。