Установка типа пакета NuGet

Пакету можно присвоить один или несколько типов пакетов, чтобы указать предполагаемое использование.

Известные типы пакетов

  • Пакеты типа Dependency добавляют ресурсы времени сборки или времени выполнения в библиотеки и приложения, и их можно устанавливать в проектах любого типа (при условии, что они совместимы).

  • Пакеты типа DotnetTool — это инструменты .NET, которые можно установить с помощью .NET CLI.

  • MSBuildSdk Пакеты типов — это пакеты SDK для проекта MSBuild, упрощающие использование пакетов разработки программного обеспечения.

  • Пакеты типов 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>

Формат строки типа пакета аналогичен используемому для идентификатора пакета. Иными словами, тип пакета — это строка без учета регистра, соответствующая регулярному выражению ^\w+([_.-]\w+)*$ и включающая от одного до 100 символов.

Если версия типа пакета задана, она является строкой Version. Версия типа пакета является необязательной и по умолчанию имеет значение 0.0.