NuGet パッケージの種類を設定する

パッケージは、使用目的を示すために、1 つ以上の "パッケージの種類" でマークすることができます。

既知のパッケージの種類

  • 種類が Dependency のパッケージでは、ビルド時または実行時アセットがライブラリとアプリケーションに追加されます。(互換性があれば) あらゆる種類のプロジェクトにインストールできます。

  • 種類が DotnetTool のパッケージは、dotnet CLI でインストールできる .NET ツールです。

  • MSBuildSdk タイプ パッケージは、ソフトウェア開発キットの使用を簡略化する MSBuild プロジェクト SDK です。

  • Template 型パッケージには、アプリ、サービス、ツール、クラス ライブラリなどのファイルまたはプロジェクトの作成に使用できるカスタム テンプレートがあります。

種類の印が付いていないパッケージ (初期のバージョンの NuGet で作成されたすべてのパッケージが相当) は種類が Dependency に初期設定されます。

Note

パッケージの種類のサポートは、NuGet 3.5 で追加されました。 カスタム パッケージの種類が必要ない場合は、パッケージの種類を明示的に "設定しない" ことをお勧めします。 種類を指定しないと、NuGet によって既定で種類 Dependency になります。

カスタム パッケージの種類

パッケージの用途が既知のパッケージの種類に合わない場合は、1 つ以上のカスタム パッケージの種類でパッケージをマークできます。

たとえば、Contoso アプリの顧客が拡張機能をインストールできるとします。 アプリでは、パッケージが必要な規則に従っている適切な拡張機能であることを示すために、カスタム パッケージの種類 ContosoExtension を使用するよう、拡張機能の作成者に要求することができます。

警告

カスタム パッケージの種類が設定されているパッケージは、Visual Studio または nuget.exe ではインストールできません。 詳細については、NuGet/Home#10468 を参照してください。

パッケージの種類は、プロジェクト ファイル (.csproj) で設定できます。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    
    <PackageType>ContosoExtension</PackageType>
  </PropertyGroup>

</Project>

複数の用途があるパッケージには、; 区切り記号を使用して複数のパッケージの種類を設定できます。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    
    <PackageType>PackageType1;PackageType2</PackageType>
  </PropertyGroup>

</Project>

パッケージの種類とその Version 文字列の間に区切り記号 , を使用することで、パッケージの種類のバージョンを管理できます。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    
    <PackageType>PackageType1, 1.0.0.0;PackageType2</PackageType>
  </PropertyGroup>

</Project>

パッケージの種類の文字列の形式は、パッケージ ID とまったく同じです。 つまり、パッケージの種類は、正規表現 ^\w+([_.-]\w+)*$ と一致する、大文字と小文字が区別されない、1 文字以上 100 文字以下の文字列です。

パッケージの種類のバージョンを指定する場合は、Version の文字列になります。 パッケージの種類のバージョンは省略可能であり、既定値は 0.0 です。