pack コマンド (NuGet CLI)

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

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

Important

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

使用方法

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) が使用されます。

  • -Deterministic

    (7.9 以降) 決定論的モードでパッケージをビルドします。 これにより、同じ入力 (ソース コード、プロジェクト ファイル、ビルド構成) に対してビット同一パッケージが生成されます。タイムスタンプに関する既知の注意事項があります。 同じ日付/時刻で再現する方法については、 DeterministicTimestamp を参照してください。

  • -DeterministicTimestamp

    (7.9 以降) NuGet パッケージに追加されたすべてのファイルのファイル変更日時として使用されるタイムスタンプを指定します。 RFC 3339 形式の日付/時刻 ( 1996-12-19T16:39:57-08:00 など)、1970 年 1 月 1 日の 00:00:00 UTC 以降のうるう以外の秒数 (Unix 時刻とも呼ばれます) を指定することも、特殊な文字列 true (既定では、現在の壁時計時刻を使用)、決定論的パッケージの作成時にファイル時刻を変更しない false にすることができます。 Deterministicが有効になっていない場合、このオプションは無視されます。

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

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

  • -SolutionDirectory

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

  • -Suffix

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

  • -SymbolPackageFormat

    シンボル パッケージを作成するときに、 snupkg 形式と symbols.nupkg 形式を選択できます。

  • -Symbols

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

  • -Tool

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

  • -Verbosity [normal|quiet|detailed]

    normal (デフォルト)、quiet、あるいは detailed の出力に表示される詳細の量を指定します。

  • -Version

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

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

開発の依存関係を除外する

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

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

たとえば、ソース プロジェクト内の次の 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には依存しません。

パックの警告の抑制

パック操作中にすべての 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 を使用してこれらのプロジェクトをパックします。