dotnet packdotnet pack

このトピックの対象: ✓ .NET Core 1.x SDK 以降のバージョンThis topic applies to: ✓ .NET Core 1.x SDK and later versions


dotnet pack - NuGet パッケージにコードをパックします。dotnet pack - Packs the code into a NuGet package.


dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration] [--force] [--include-source] [--include-symbols] [--interactive] 
    [--no-build] [--no-dependencies] [--no-restore] [--nologo] [-o|--output] [--runtime] [-s|--serviceable] 
    [-v|--verbosity] [--version-suffix]
dotnet pack [-h|--help]


dotnet pack コマンドはプロジェクトをビルドし、NuGet パッケージを作成します。The dotnet pack command builds the project and creates NuGet packages. このコマンドの結果が NuGet パッケージ (つまり、 .nupkg ファイル) です。The result of this command is a NuGet package (that is, a .nupkg file).

デバッグ シンボルを含むパッケージを生成する場合、使用可能なオプションが 2 つあります。If you want to generate a package that contains the debug symbols, you have two options available:

  • --include-symbols -シンボル パッケージを作成します。--include-symbols - it creates the symbols package.
  • --include-source -ソース ファイルが含まれた src フォルダーを含むシンボル パッケージを作成します。--include-source - it creates the symbols package with a src folder inside containing the source files.

パックされるプロジェクトの NuGet 依存関係が .nuspec ファイルに追加されるため、パッケージのインストール時に適切に解決されます。NuGet dependencies of the packed project are added to the .nuspec file, so they're properly resolved when the package is installed. プロジェクト間参照はプロジェクト内にはパッケージ化されません。Project-to-project references aren't packaged inside the project. 現時点では、プロジェクト間の依存関係がある場合は、プロジェクトごとにパッケージが必要になります。Currently, you must have a package per project if you have project-to-project dependencies.

既定では、dotnet pack は最初にプロジェクトをビルドします。By default, dotnet pack builds the project first. この動作を避けたい場合は、--no-build オプションを渡します。If you wish to avoid this behavior, pass the --no-build option. このオプションは、コードが既にビルドされていることがわかっている場合の継続的インテグレーション (CI) ビルド シナリオで役立つことがよくあります。This option is often useful in Continuous Integration (CI) build scenarios where you know the code was previously built.

パッキング プロセスのために dotnet pack コマンドに MSBuild のプロパティを使用できます。You can provide MSBuild properties to the dotnet pack command for the packing process. 詳細については、「NuGet メタデータ プロパティ」と「MSBuild コマンド ライン リファレンス」を参照してください。For more information, see NuGet metadata properties and the MSBuild Command-Line Reference. 」のセクションでは、MSBuild の -p スイッチを使用する方法について、2 つの異なるシナリオで説明します。The Examples section shows how to use the MSBuild -p switch for a couple of different scenarios.

Web プロジェクトは既定でパッケージ化可能ではありません。Web projects aren't packable by default. 既定の動作をオーバーライドするには、 .csproj ファイルに次のプロパティを追加します。To override the default behavior, add the following property to your .csproj file:



.NET Core 2.0 以降、dotnet restore を実行する必要がなくなりました。dotnet builddotnet run のような、復元を必要とするあらゆるコマンドによって暗黙的に実行されるためです。Starting with .NET Core 2.0, you don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet build and dotnet run. Azure DevOps Services の継続的インテグレーション ビルドなど、明示的な復元が合理的となる一部のシナリオや、復元の時刻を明示的に制御する必要があるビルド システムでは、引き続き有効なコマンドとなります。It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control the time at which the restore occurs.

このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。This command also supports the dotnet restore options when passed in the long form (for example, --source). -s のような短い形式のオプションはサポートされていません。Short form options, such as -s, are not supported.



パックするプロジェクトまたはソリューション。The project or solution to pack. csproj ファイル、ソリューション ファイル、またはディレクトリのいずれかへのパスです。It's either a path to a csproj file, a solution file, or to a directory. 指定されていない場合、コマンドによりプロジェクトまたはソリューション ファイルが現在のディレクトリで検索されます。If not specified, the command searches the current directory for a project or solution file.


  • -c|--configuration {Debug|Release}

    ビルド構成を定義します。Defines the build configuration. 既定値は Debug です。The default value is Debug.

  • --force

    最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。Forces all dependencies to be resolved even if the last restore was successful. このフラグを指定することは、project.assets.json ファイルを削除することと同じです。Specifying this flag is the same as deleting the project.assets.json file. .NET Core 2.0 SDK 以降、使用できるオプションです。Option available since .NET Core 2.0 SDK.

  • -h|--help

    コマンドの短いヘルプを印刷します。Prints out a short help for the command.

  • --include-source

    通常の NuGet パッケージに加えて、デバッグ シンボル NuGet パッケージが出力ディレクトリ内に含まれます。Includes the debug symbols NuGet packages in addition to the regular NuGet packages in the output directory. ソース ファイルは、シンボル パッケージ内の src フォルダーに含まれます。The sources files are included in the src folder within the symbols package.

  • --include-symbols

    通常の NuGet パッケージに加えて、デバッグ シンボル NuGet パッケージが出力ディレクトリ内に含まれます。Includes the debug symbols NuGet packages in addition to the regular NuGet packages in the output directory.

  • --interactive

    コマンドを停止して、ユーザーの入力または操作のために待機させることができます (たとえば、認証を完了する場合)。Allows the command to stop and wait for user input or action (for example, to complete authentication). .NET Core 3.0 SDK 以降で使用できます。Available since .NET Core 3.0 SDK.

  • --no-build

    パッキングの前にプロジェクトをビルドしません。Doesn't build the project before packing. また、--no-restore フラグが暗黙的に設定されます。It also implicitly sets the --no-restore flag.

  • --no-dependencies

    プロジェクト間参照を無視し、ルート プロジェクトのみを復元します。Ignores project-to-project references and only restores the root project. .NET Core 2.0 SDK 以降、使用できるオプションです。Option available since .NET Core 2.0 SDK.

  • --no-restore

    コマンドを実行するときに、暗黙的な復元を実行しません。Doesn't execute an implicit restore when running the command. .NET Core 2.0 SDK 以降、使用できるオプションです。Option available since .NET Core 2.0 SDK.

  • --nologo

    著作権情報を表示しません。Doesn't display the startup banner or the copyright message. .NET Core 3.0 SDK 以降で使用できます。Available since .NET Core 3.0 SDK.

  • -o|--output <OUTPUT_DIRECTORY>

    指定したディレクトリにビルド済みパッケージを配置します。Places the built packages in the directory specified.

  • --runtime <RUNTIME_IDENTIFIER>

    パッケージを復元するターゲット ランタイムを指定します。Specifies the target runtime to restore packages for. ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。For a list of Runtime Identifiers (RIDs), see the RID catalog. .NET Core 2.0 SDK 以降、使用できるオプションです。Option available since .NET Core 2.0 SDK.

  • -s|--serviceable

    パッケージに処理可能フラグを設定します。Sets the serviceable flag in the package. 詳しくは、「.NET Blog: .NET 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries」(.NET ブログ: .NET 4.5.1 は .NET NuGet ライブラリに対する Microsoft セキュリティ更新プログラムをサポートする) をご覧ください。For more information, see .NET Blog: .NET 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries.

  • --version-suffix <VERSION_SUFFIX>

    プロジェクトの $(VersionSuffix) MSBuild プロパティの値を定義します。Defines the value for the $(VersionSuffix) MSBuild property in the project.

  • -v|--verbosity <LEVEL>

    コマンドの詳細レベルを設定します。Sets the verbosity level of the command. 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].


  • 現在のディレクトリのプロジェクトをパックします。Pack the project in the current directory:

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

    dotnet pack ~/projects/app1/project.csproj
  • プロジェクトを現在のディレクトリにパックし、nupkgs フォルダーに生成されたパッケージを配置します。Pack the project in the current directory and place the resulting packages into the nupkgs folder:

    dotnet pack --output nupkgs
  • 現在のディレクトリのプロジェクトを nupkgs フォルダーにパックし、ビルド ステップをスキップします。Pack the project in the current directory into the nupkgs folder and skip the build step:

    dotnet pack --no-build --output nupkgs
  • .csproj ファイルで <VersionSuffix>$(VersionSuffix)</VersionSuffix> として構成されているプロジェクトのバージョン サフィックスで、現在のプロジェクトをパックし、結果のパッケージ バージョンを指定されたサフィックスで更新します。With the project's version suffix configured as <VersionSuffix>$(VersionSuffix)</VersionSuffix> in the .csproj file, pack the current project and update the resulting package version with the given suffix:

    dotnet pack --version-suffix "ci-1234"
  • PackageVersion MSBuild プロパティで 2.1.0 にパッケージ バージョンを設定します。Set the package version to 2.1.0 with the PackageVersion MSBuild property:

    dotnet pack -p:PackageVersion=2.1.0
  • プロジェクトを特定のターゲット フレームワーク用にパックします。Pack the project for a specific target framework:

    dotnet pack -p:TargetFrameworks=net45
  • プロジェクトをパックして、復元操作の特定のランタイム (Windows 10) を使用します(.NET Core SDK 2.0 以降のバージョン)。Pack the project and use a specific runtime (Windows 10) for the restore operation (.NET Core SDK 2.0 and later versions):

    dotnet pack --runtime win10-x64
  • .nuspec ファイルを使用してプロジェクトをパックします。Pack the project using a .nuspec file:

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget