Establecimiento de un tipo de paquete NuGet

Los paquetes se pueden marcar con uno más tipos de paquetes para indicar su uso previsto.

Tipos de paquete conocidos

  • Los paquetes de tipo Dependency agregan activos de tiempo de compilación o ejecución a las aplicaciones y bibliotecas, y se pueden instalar en cualquier tipo de proyecto (suponiendo que sean compatibles).

  • Los paquetes de tipo DotnetTool son herramientas de .NET que se pueden instalar mediante la CLI de dotnet.

  • Los paquetes de tipo MSBuildSdk son SDK de proyecto de MSBuild que simplifican el uso de kits de desarrollo de software.

  • Los paquetes de tipo Template proporcionan plantillas personalizadas que se pueden usar para crear archivos o proyectos como una aplicación, un servicio, una herramienta o una biblioteca de clases.

Los paquetes que no se marcan con un tipo, incluidos todos los creados con versiones anteriores de NuGet, tienen el tipo Dependency de forma predeterminada.

Nota:

Se agregó compatibilidad con tipos de paquete en NuGet 3.5. Si no necesita un tipo de paquete personalizado, es mejor no establecer explícitamente el tipo de paquete. El tipo predeterminado de NuGet es Dependency cuando no se especifica ningún tipo.

Tipos de paquetes personalizados

Puede marcar el paquete con uno o varios tipos de paquetes personalizados si su uso no se ajusta a los tipos de paquete conocidos.

Por ejemplo, imagine que los clientes de la aplicación Contoso pueden instalar extensiones. La aplicación podría requerir que los autores de extensiones usen el tipo de paquete personalizado ContosoExtension para identificar sus paquetes como extensiones adecuadas que sigan las convenciones necesarias.

Advertencia

Visual Studio o nuget.exe no pueden instalar un paquete con un tipo de paquete personalizado. Consulte NuGet/Home#10468 para más información.

Los tipos de paquete se pueden establecer en el archivo de proyecto (.csproj):

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

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

</Project>

Los paquetes con varios usos previstos se pueden marcar con varios tipos de paquete mediante el delimitador ;:

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

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

</Project>

Se pueden crear versiones de los tipos de paquete mediante un delimitador , entre el tipo de paquete y su cadena Version:

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

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

</Project>

El formato de una cadena de tipo paquete es exactamente igual al de un identificador de paquete. Es decir, un tipo de paquete es una cadena que no distingue mayúsculas de minúsculas que coincide con la expresión regular ^\w+([_.-]\w+)*$ que tiene al menos un carácter y como máximo 100 caracteres.

Si se proporciona, la versión del tipo de paquete es una cadena Version. La versión del tipo de paquete es opcional y el valor predeterminado es 0.0.