NuGet はすべての .NET プロジェクトで動作します。 ただし、プロジェクト形式 (SDK スタイルまたは非 SDK スタイル) によって、NuGet パッケージの使用と作成に使用する必要があるツールとメソッドの一部が決まります。 SDK スタイルのプロジェクトでは 、SDK 属性が使用されます。 NuGet パッケージの使用と作成に使用するメソッドとツールはプロジェクトの形式に依存するため、プロジェクトの種類を特定することが重要です。 SDK スタイル以外のプロジェクトの場合、メソッドとツールは、プロジェクトが PackageReference 形式に移行されたかどうかにも依存します。
プロジェクトが SDK スタイルであるかどうかは、プロジェクトの作成に使用されるメソッドによって異なります。 次の表は、Visual Studio 2017 以降のバージョンを使用してプロジェクトを作成するときの既定のプロジェクト形式と、プロジェクトに関連付けられている CLI ツールを示しています。
| プロジェクト | 既定のプロジェクト形式 | CLI ツール | 注記 |
|---|---|---|---|
| .NET Standard | SDK スタイル | dotnet SDK | Visual Studio 2017 より前に作成されたプロジェクトは、SDK スタイル以外です。
nuget.exe CLI を使用します。 |
| .NET コア | 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 スタイルの形式かどうかわからない場合は、プロジェクト ファイル内の <Project> 要素で SDK 属性を探します (C# の場合、これは *.csproj ファイルです)。 存在する場合、プロジェクトは 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 で作業している場合は、次のいずれかの方法を使用して、プロジェクトの形式をすばやく確認できます。
ソリューション エクスプローラーでプロジェクトを右クリックし、[ myprojectname.csproj の編集] を選択します。
このオプションは、SDK スタイルの属性を使用するプロジェクトに対して Visual Studio 2017 以降でのみ使用できます。 それ以外の場合は、他のメソッドを使用します。
SDK スタイルのプロジェクトでは、プロジェクト ファイルに SDK 属性 が表示されます。
[プロジェクト] メニューから [プロジェクトのアンロード] を選択します (または、プロジェクトを右クリックして [プロジェクトのアンロード] を選択します)。
このプロジェクトでは、プロジェクト ファイルに SDK 属性は含まれません。 SDK スタイルのプロジェクトではありません。
次に、アンロードされたプロジェクトを右クリックし、[ Edit myprojectname.csproj]\(myprojectname.csproj の編集\) を選択します。