设置 NuGet 包类型
包可以用多于一个包类型进行标记,以指示其预期用途。
已知包类型
Dependency
类型包将生成或运行时资产添加到库和应用程序,并且可以在任何项目类型中安装(假设它们相互兼容)。DotnetTool
类型包是可以通过 dotnet CLI 安装的 .NET 工具。MSBuildSdk
类型包是 MSBuild 项目 SDK,可简化使用软件开发工具包。Template
类型包提供自定义模板,这些模板可以用来创建文件或项目,例如应用、服务、工具或类库。
未标记类型的包(包含使用更早版本的 NuGet 创建的所有包)默认为 Dependency
类型。
注意
已在 NuGet 3.5 中添加对包类型的支持。
如果不需要自定义包类型,最好不要显式设置包类型。
如果未指定类型,则 NuGet 默认为 Dependency
类型。
自定义包类型
如果其用途不适合已知包类型,则可以使用一个或多个自定义包类型来标记包。
例如,假设 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
。