pack コマンド (NuGet CLI)

適用対象: パッケージの作成 • サポートされているバージョン: 2.7 以降

指定した .nuspec またはプロジェクト ファイルに基づいて NuGet パッケージを作成します。 dotnet pack コマンド (「dotnet コマンド」を参照) と msbuild -t:pack (「MSBuild ターゲット」を参照) を代替候補として使用できます。

重要

PackageReference ベースのプロジェクトには dotnet pack または msbuild -t:pack を使用します。 NuGet バージョン 6.5 以降では、これらのプロジェクト タイプをパックしようとすると pack コマンドがエラーになります。 以前のバージョンではパックが試みられますが、生成されたパッケージが正しくない可能性があります。 Mono では、プロジェクト ファイルからのパッケージの作成はサポートされていません。 nuget.exe 自体は Windows パス名を変換しないため、.nuspec ファイル内のローカル以外のパスを Unix スタイルのパスに調整する必要もあります。

使用方法

nuget pack <nuspecPath | projectPath> [options] [-Properties ...]

ここで <nuspecPath><projectPath> には、それぞれ .nuspec またはプロジェクト ファイルを指定します。

[オプション]

  • -BasePath

    .nuspec ファイルで定義されたファイルのベース パスを設定します。

  • -Build

    パッケージをビルドする前にプロジェクトをビルドすることを指定します。

  • -ConfigFile

    適用する NuGet 構成ファイル。 指定しない場合は、%AppData%\NuGet\NuGet.Config (Windows)、~/.nuget/NuGet/NuGet.Config または ~/.config/NuGet/NuGet.Config (Mac/Linux) が使用されます。

  • -Exclude

    パッケージの作成時に除外する 1 つまたは複数のワイルドカード パターンを指定します。 複数のパターンを指定するには、-Exclude フラグを繰り返します。 以下の例をご覧ください。

  • -ExcludeEmptyDirectories

    パッケージのビルド時に空のディレクトリが含まれないようにします。

  • -ForceEnglishOutput

    (3.5 以降) インバリアントの英語ベースのカルチャを使用して、nuget.exe の実行を強制します。

  • -?|-help

    コマンドのヘルプ情報を表示します。

  • -IncludeReferencedProjects

    ビルドされたパッケージに、依存関係として、またはパッケージの一部として参照されるプロジェクトを含める必要があることを示します。 参照先のプロジェクトに、プロジェクトと同じ名前の対応する .nuspec ファイルがある場合、その参照先プロジェクトは依存関係として追加されます。 それ以外の場合は、参照先のプロジェクトがパッケージの一部として追加されます。

  • -InstallPackageToOutputPath

    フィードとして共有をサポートするためにパッケージ出力ディレクトリをコマンドで準備する必要があるかどうかを指定します。

  • -MinClientVersion

    作成されたパッケージの minClientVersion 属性を設定します。 この値は、.nuspec ファイル内の既存の minClientVersion 属性 (存在する場合) の値をオーバーライドします。

  • -MSBuildPath

    (4.0 以降) コマンドで使用する MSBuild のパスを指定します。-MSBuildVersion よりも優先されます。

  • -MSBuildVersion

    (3.2 以降) このコマンドで使用する MSBuild のバージョンを指定します。 サポートされる値は、4、12、14、15.1、15.3、15.4、15.5、15.6、15.7、15.8、15.9 です。 既定では、パス内の MSBuild が選択されます。それ以外の場合は、インストールされている MSBuild の最も新しいバージョンが既定値です。

  • -NoDefaultExcludes

    NuGet パッケージ ファイルと、.svn.gitignore など、ドットで始まるファイルとフォルダーが既定で除外されることがないようにします。

  • -NonInteractive

    ユーザーによる入力や確認を求めるプロンプトを表示しません。

  • -NoPackageAnalysis

    パッケージのビルド後に、パックでパッケージの分析を実行しないことを指定します。

  • -OutputDirectory

    作成されたパッケージを保存するフォルダーを指定します。 フォルダーが指定されない場合、現在のフォルダーが使用されます。

  • -OutputFileNamesWithoutVersion

    バージョンを指定せずにパッケージ出力名をコマンドで準備する必要があるかどうかを指定します。

  • -PackagesDirectory

    パッケージ フォルダーを指定します。

  • -p|-Properties

    他のオプションの後に、コマンド ラインの最後に指定する必要があります。 プロジェクト ファイル内の値をオーバーライドするプロパティのリストを指定します。プロパティ名については、「MSBuild プロジェクトの共通プロパティ」を参照してください。 ここの Properties 引数は、token=value ペアをセミコロンで区切ったリストです。.nuspec ファイルで $token$ が出現するたびに、指定された値で置き換えられます。 値には、引用符で囲まれた文字列を指定できます。 "Configuration" プロパティの既定値は "Debug" であることに注意してください。 Release の構成に変更するには、-Properties Configuration=Release を使用します。 一般に、プロパティは、変なビヘイビアーが発生する可能性がないように、対応するプロジェクトのビルド中に使用されたプロパティと同じにすることが適切です。

  • -SolutionDirectory

    ソリューション ディレクトリを指定します。

  • -Suffix

    (3.4.4 以降) 内部で生成されたバージョン番号にサフィックスを追加します。通常は、ビルドやその他のプレリリース識別子を追加するために使用されます。 たとえば、-suffix nightly を使用すると、1.2.3-nightly のようなバージョン番号を持つパッケージが作成されます。 さまざまなバージョンの NuGet と NuGet パッケージ マネージャーでの警告、エラー、および互換性がない可能性を回避するため、サフィックスは英字で始まる必要があります。

  • -SymbolPackageFormat

    シンボル パッケージを作成するときに、snupkgsymbols.nupkg の形式から選択できるようにします。

  • -Symbols

    パッケージにソースとシンボルが含まれることを指定します。 .nuspec ファイルと共に使用すると、通常の NuGet パッケージ ファイルと、対応するシンボル パッケージが作成されます。 既定では、レガシ シンボル パッケージが作成されます。 シンボル パッケージに推奨される新しい形式は .snupkg です。 「シンボル パッケージ (.snupkg) の作成」を参照してください。

  • -Tool

    プロジェクトの出力ファイルをパッケージ内の tools フォルダーに配置するように指定します。

  • -Verbosity [normal|quiet|detailed]

    出力表示の詳細度を、normal (既定)、quiet、または detailed に指定します。

  • -Version

    .nuspec ファイルのバージョン番号をオーバーライドします。

環境変数」を参照してください。

開発用依存関係の除外

一部の NuGet パッケージは、独自のライブラリを作成するのに役立つ開発用依存関係として役立ちますが、必ずしも実際のパッケージの依存関係として必要とは限りません。

pack コマンドは、developmentDependency 属性が true に設定されている packages.configpackage エントリを無視します。 これらのエントリは、作成されたパッケージに依存関係として含まれません。

たとえば、ソース プロジェクト内の次の packages.config ファイルを考えます。

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="jQuery" version="1.5.2" />
    <package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
    <package id="microsoft-web-helpers" version="1.15" />
</packages>

このプロジェクトでは、nuget pack によって作成されたパッケージには jQuerymicrosoft-web-helpers の依存関係が含まれますが、netfx-Guard は含まれません。

pack 警告の抑制

パック操作中にすべての NuGet 警告を解決することをお勧めしますが、特定の状況では、それらを抑制することが許容されます。

次のようにすれば実現できます。

nuget.exe pack package.nuspec -Properties NoWarn=NU5104

nuget pack

nuget pack foo.nuspec

nuget pack foo.csproj

nuget pack foo.csproj -Properties Configuration=Release

nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5"

# Create a package from project foo.csproj, using MSBuild version 12 to build the project
nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5"

# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg
nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg

nuget pack foo.nuspec -Version 2.1.0

nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5

nuget pack Package.nuspec -exclude "*.exe" -exclude "*.bat"

Note

SDK スタイルのプロジェクトでは pack コマンドはサポートされていません。これらのプロジェクトをパックするには、代わりに dotnet pack または msbuild -t:pack を使用します。