Partager via


Définir un type de package NuGet

Les packages peuvent être marqués avec un autre type de package pour indiquer son utilisation prévue.

Types de packages connus

  • Dependency Les packages de type ajoutent des ressources de build ou d’exécution aux bibliothèques et applications, et peuvent être installés dans n’importe quel type de projet (en supposant qu’ils sont compatibles).

  • DotnetTool Les packages de type sont des outils .NET qui peuvent être installés par l’interface CLI dotnet.

  • MSBuildSdk Les packages de type sont des kits SDK de projet MSBuild qui simplifient l’utilisation des kits de développement logiciel.

  • Template Les packages de type fournissent des modèles personnalisés qui peuvent être utilisés pour créer des fichiers ou des projets comme une application, un service, un outil ou une bibliothèque de classes.

  • McpServer Les paquets de type contiennent des serveurs MCP. Ce type de package est toujours accompagné du type de DotnetTool package, car un serveur MCP local est distribué en tant qu’outil .NET. Pour plus d’informations sur le serveur MCP et NuGet, consultez les serveurs MCP dans les packages NuGet.

Les packages non marqués avec un type, y compris tous les packages créés avec des versions antérieures de NuGet, sont définis par défaut sur le Dependency type.

Note

La prise en charge des types de package a été ajoutée dans NuGet 3.5. Si vous n’avez pas besoin d’un type de package personnalisé, il est préférable de ne pas définir explicitement le type de package. NuGet est défini par défaut sur le Dependency type lorsqu’aucun type n’est spécifié.

Types de packages personnalisés

Vous pouvez marquer votre package avec un ou plusieurs types de package personnalisés si son utilisation ne correspond pas aux types de package connus.

Par exemple, imaginez que les clients de l’application Contoso peuvent installer des extensions. L’application peut exiger que les auteurs d’extensions utilisent le type ContosoExtension de package personnalisé pour identifier leurs packages en tant qu’extensions appropriées qui suivent les conventions requises.

Warning

Un package avec un type de package personnalisé ne peut pas être installé par Visual Studio ou nuget.exe. Pour plus d’informations, consultez NuGet/Home#10468 .

Les types de package peuvent être définis dans le fichier projet (.csproj) :

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

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

</Project>

Les packages avec plusieurs utilisations prévues peuvent être marqués avec plusieurs types de packages à l’aide du ; délimiteur :

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

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

</Project>

Les types de package peuvent être versionnés à l’aide d’un , délimiteur entre le type de package et sa Version chaîne :

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

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

</Project>

Le format d’une chaîne de type de package est exactement semblable à un ID de package. Autrement dit, un type de package est une chaîne insensible à la casse correspondant à l'expression régulière ^\w+([_.-]\w+)*$, contenant au moins un caractère et au plus 100 caractères.

Si elle est fournie, la version du type de package est une Version chaîne. La version du type de package est facultative et la valeur par défaut est 0.0.