dotnet packdotnet pack

この記事の対象: ✔️ .NET Core 2.x SDK 以降のバージョンThis article applies to: ✔️ .NET Core 2.x SDK and later versions

名前Name

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

構文Synopsis

dotnet pack [<PROJECT>|<SOLUTION>] [-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] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

説明Description

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.

注意

場合によっては、暗黙的なビルドは実行できません。In some cases, the implicit build cannot be performed. これは、ビルドとパック ターゲット間の循環依存を回避するため GeneratePackageOnBuild が設定されている場合に発生します。This can occur when GeneratePackageOnBuild is set, to avoid a cyclic dependency between build and pack targets. ロックされているファイルがある場合や、その他の問題がある場合にも、ビルドは失敗します。The build can also fail if there is a locked file or other issue.

パッキング プロセスのために 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:

<PropertyGroup>
   <IsPackable>true</IsPackable>
</PropertyGroup>

暗黙的な復元Implicit restore

dotnet restore を実行する必要がなくなりました。復元を必要とするすべてのコマンド (dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack など) によって暗黙的に実行されるためです。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 new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. 暗黙的な復元を無効にするには、--no-restore オプションを使用します。To disable implicit restore, use the --no-restore option.

Azure DevOps Services の継続的インテグレーション ビルドなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。For information about how to manage NuGet feeds, see the dotnet restore documentation.

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

引数Arguments

PROJECT | SOLUTION

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

オプションOptions

  • -c|--configuration <CONFIGURATION>

    ビルド構成を定義します。Defines the build configuration. ほとんどのプロジェクトの既定値は Debug ですが、プロジェクトでビルド構成設定をオーバーライドできます。The default for most projects is Debug, but you can override the build configuration settings in your project.

  • --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.

  • -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.

  • --no-restore

    コマンドを実行するときに、暗黙的な復元を実行しません。Doesn't execute an implicit restore when running the command.

  • --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.

  • -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].

使用例Examples

  • 現在のディレクトリのプロジェクトをパックします。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) を使用する:Pack the project and use a specific runtime (Windows 10) for the restore operation:

    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
    

    NuspecFileNuspecBasePathNuspecProperties の詳細については、次のリソースを参照してください。For information about how to use NuspecFile, NuspecBasePath, and NuspecProperties, see the following resources: