NuGet 适用于所有 .NET 项目。 但是,项目格式(SDK 样式或非 SDK 样式)确定使用和创建 NuGet 包所需的一些工具和方法。 SDK 样式项目使用 SDK 属性。 请务必标识项目类型,因为用于使用和创建 NuGet 包的方法和工具依赖于项目格式。 对于非 SDK 样式项目,方法和工具也取决于项目是否已迁移到 PackageReference 格式。
项目是否为 SDK 样式取决于用于创建项目的方法。 下表显示了使用 Visual Studio 2017 及更高版本创建项目时项目的默认项目格式和关联的 CLI 工具。
| Project | 默认项目格式 | 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”。
此选项仅在 Visual Studio 2017 中可用于使用 SDK 样式属性的项目。 否则,请使用其他方法。
SDK 样式项目显示项目文件中的 SDK 属性 。
在“项目”菜单中,选择“卸载项目”(或右键单击该项目,然后选择“卸载项目”。
此项目不会在项目文件中包括 SDK 属性。 它不是 SDK 样式的项目。
然后,右键单击卸载的项目,然后选择 “编辑 myprojectname.csproj”。