封裝可以再標記一個 套件類型 ,以指出其預定用途。
已知套件類型
Dependency類型套件會將組建或運行時間資產新增至連結庫和應用程式,而且可以安裝在任何項目類型中(假設它們相容)。DotnetTool類型套件是 可由 dotnet CLI 安裝的 .NET 工具。MSBuildSdk類型套件是 MSBuild 專案 SDK ,可簡化使用軟體開發工具包。Template類型套件提供 自定義範本 ,可用來建立檔案或專案,例如應用程式、服務、工具或類別庫。McpServer類型套件包含 MCP 伺服器。 此套件類型一律會伴隨DotnetTool套件類型,因為本機 MCP 伺服器會以 .NET 工具的形式散發。 如需 MCP 伺服器和 NuGet 的資訊,請參閱 NuGet 套件中的 MCP 伺服器。
未標示為類型的套件,包括以舊版 NuGet 建立的所有套件,預設為 Dependency 類型。
Note
NuGet 3.5 已新增套件類型的支援。
如果您不需要自定義套件類型,最好 不要 明確設定封裝類型。
未指定類型時,NuGet 預設為 Dependency 類型。
自定義套件類型
如果套件的使用不符合 已知的封裝類型,您可以使用一或多個自定義套件類型來標示您的套件。
例如,假設應用程式的客戶 Contoso 可以安裝擴充功能。 應用程式可能需要延伸模組作者使用自定義套件類型 ContosoExtension 來識別其套件,作為遵循必要慣例的適當延伸模組。
Warning
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>
封裝類型字串的格式與套件識別碼完全相同。 也就是說,封裝類型是不區分大小寫的字串,符合至少一個字元且最多 100 個字元的正則表達式 ^\w+([_.-]\w+)*$ 。
如果提供,則套件類型版本是 Version 字串。 套件類型版本是選擇性的,預設為 0.0。