プロジェクトの形式を特定する

NuGet はすべての .NET プロジェクトに対応しています。 ただし、NuGet パッケージの使用と作成のために使う必要がある一部のツールと方法は、プロジェクトの形式 (SDK スタイルまたは非 SDK スタイル) によって決まります。 SDK スタイルのプロジェクトでは、SDK 属性が使用されます。 NuGet パッケージの使用と作成のために使う方法とツールは、プロジェクトの形式によって異なるため、ご自分のプロジェクトの種類を特定することが重要です。 非 SDK スタイルのプロジェクトの場合、その方法とツールは、そのプロジェクトが PackageReference 形式に移行されているかどうかにも依存します。

ご自分のプロジェクトが SDK スタイルであるかどうかは、そのプロジェクトの作成に使用した方法によって異なります。 次の表は、Visual Studio 2017 以降のバージョンを使ってプロジェクトを作成した場合の、プロジェクトの既定の形式と、関連付けられている CLI ツールを示しています。

プロジェクト プロジェクトの既定の形式 CLI ツール メモ
.NET Standard SDK スタイル dotnet SDK Visual Studio 2017 より前に作成されたプロジェクトは SDK 形式ではありません。 nuget.exe CLI をお使いください。
.NET Core SDK スタイル dotnet SDK Visual Studio 2017 より前に作成されたプロジェクトは SDK 形式ではありません。 nuget.exe CLI をお使いください。
.NET Framework 非 SDK スタイル nuget.exe CLI 他の方法で作成された .NET Framework プロジェクトは、SDK スタイルのプロジェクトである場合があります。 そのような場合は、代わりに dotnet SDK をお使いください。
移行した .NET プロジェクト 非 SDK スタイル パッケージを作成する場合は、msbuild -t:pack を使ってパッケージを作成します。 パッケージを作成する場合は、msbuild -t:pack をお勧めします。 それ以外の場合は、dotnet SDK をお使いください。 移行されたプロジェクトは、SDK スタイルのプロジェクトではありません。

プロジェクトの形式を確認する

プロジェクトが SDK スタイルの形式であるかどうかがわからない場合は、プロジェクト ファイル (C# の場合は *.csproj ファイル) の <Project> 要素で SDK 属性を探します。 これが存在する場合、そのプロジェクトは SDK スタイルのプロジェクトです。

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

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Authors>authorname</Authors>
    <PackageId>mypackageid</PackageId>
    <Company>mycompanyname</Company>
  </PropertyGroup>

</Project>

Visual Studio でプロジェクトの形式を確認する

Visual Studio で作業している場合は、次のいずれかの方法を使用して、プロジェクトの形式をすばやく確認できます。

  • ソリューション エクスプローラーでプロジェクトを右クリックし、[<プロジェクト名>.csproj の編集] を選択します。

    このオプションは、Visual Studio 2017 以降で、SDK スタイルの属性を使用するプロジェクトに対してのみ使用できます。 それ以外の場合は、他の方法を使用します。

    Edit the project file

    SDK スタイルのプロジェクトのプロジェクト ファイルには、SDK 属性が表示されます。

  • [プロジェクト] メニューから、[プロジェクトのアンロード] を選択します (または、プロジェクトを右クリックして、[プロジェクトのアンロード] を選択します)。

    このプロジェクトのプロジェクト ファイルには、SDK 属性が含まれません。 これは SDK 形式のプロジェクトではありません。

    Unload the project

    次に、アンロードされたプロジェクトを右クリックし、[<プロジェクト名>.csproj の編集] を選択します。

関連項目