Freigeben über


Festlegen eines NuGet-Pakettyps

Pakete können mit einem weiteren Pakettyp gekennzeichnet werden, um die beabsichtigte Verwendung anzugeben.

Bekannte Pakettypen

  • Dependency Typ-Pakete fügen Bibliotheken und Anwendungen Build- oder Laufzeit-Assets hinzu und können in jedem Projekttyp installiert werden, vorausgesetzt, sie sind kompatibel.

  • DotnetTool Typpakete sind .NET-Tools, die von der dotnet CLI installiert werden können.

  • MSBuildSdk Typpakete sind MSBuild-Projekt-SDKs, die die Nutzung von Software-Development-Kits vereinfachen.

  • Template Typpakete stellen benutzerdefinierte Vorlagen bereit, mit denen Dateien oder Projekte wie eine App, ein Dienst, ein Tool oder eine Klassenbibliothek erstellt werden können.

  • McpServer Typpakete enthalten MCP-Server. Dieser Pakettyp wird immer vom DotnetTool Pakettyp begleitet, da ein lokaler MCP-Server als .NET-Tool verteilt wird. Informationen zu MCP-Server und NuGet finden Sie unter MCP-Server in NuGet-Paketen.

Pakete, die nicht mit einem Typ gekennzeichnet sind, einschließlich aller Pakete, die mit früheren Versionen von NuGet erstellt wurden, haben standardmäßig den Typ Dependency.

Note

Unterstützung für Pakettypen wurde in NuGet 3.5 hinzugefügt. Wenn Sie keinen benutzerdefinierten Pakettyp benötigen, ist es am besten, den Pakettyp nicht explizit festzulegen. NuGet wird standardmäßig auf den Dependency Typ festgelegt, wenn kein Typ angegeben wird.

Benutzerdefinierte Pakettypen

Sie können Ihr Paket mit einem oder mehreren benutzerdefinierten Pakettypen markieren, wenn die Verwendung nicht den bekannten Pakettypen entspricht.

Stellen Sie sich beispielsweise vor, dass Kunden der Contoso App Erweiterungen installieren können. Die App könnte Erweiterungsautoren benötigen, um den benutzerdefinierten Pakettyp ContosoExtension zu verwenden, um ihre Pakete als richtige Erweiterungen zu identifizieren, die den erforderlichen Konventionen entsprechen.

Warning

Ein Paket mit einem benutzerdefinierten Pakettyp kann von Visual Studio oder nuget.exenicht installiert werden. Weitere Informationen finden Sie unter NuGet/Home#10468 .

Pakettypen können in der Projektdatei festgelegt werden (.csproj):

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

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    
    <PackageType>ContosoExtension</PackageType>
  </PropertyGroup>

</Project>

Pakete mit mehreren beabsichtigten Verwendungen können mithilfe des ; Trennzeichens mit mehreren Pakettypen gekennzeichnet werden:

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

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    
    <PackageType>PackageType1;PackageType2</PackageType>
  </PropertyGroup>

</Project>

Pakettypen können mit einem , Trennzeichen zwischen dem Pakettyp und dessen Version Zeichenfolge versionsgesteuert werden:

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

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    
    <PackageType>PackageType1, 1.0.0.0;PackageType2</PackageType>
  </PropertyGroup>

</Project>

Das Format einer Pakettypzeichenfolge entspricht genau einer Paket-ID. Das heißt, ein Pakettyp ist eine nicht auf Groß-/Kleinschreibung achtende Zeichenfolge, die dem regulären Ausdruck ^\w+([_.-]\w+)*$ mit mindestens einem Zeichen und höchstens 100 Zeichen entspricht.

Wenn angegeben, ist die Pakettypversion eine Version Zeichenfolge. Die Pakettypversion ist optional und standardmäßig auf 0.0.