Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете ссылаться на всю инфраструктуру сборки, необходимую для стека технологий разработки, например пакет SDK для .NET, просто ссылаясь на набор свойств и целевых объектов, которые коллективно называются пакетом SDK для проекта по определенному идентификатору. Идентификатор ссылается на определенный .props
набор файлов, содержащих определения свойств и .targets
файлы, содержащие определения целевых объектов. Вы ссылаетесь на пакет SDK проекта с помощью Sdk
атрибута на узле проекта верхнего уровня.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Во время оценки проекта MSBuild добавляет неявные импорты в верхней и нижней части файла проекта:
<Project>
<!-- Implicit top import -->
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
<!-- Implicit bottom import -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
Существует множество пакетов SDK, распределенных корпорацией Майкрософт. Пакет SDK для проекта, на который ссылается в предыдущем примере, имеет моникер Microsoft.NET.Sdk
. Пакеты SDK проекта, связанные с .NET Core и .NET 5 и более поздних версий, перечислены в обзоре пакета SDK для проектов .NET.
Ссылка на пакет SDK для проекта
Существует три способа ссылки на пакет SDK для проекта:
Использование атрибута Sdk
в элементе Project
<Project Sdk="My.Custom.Sdk">
...
</Project>
Неявный импорт добавляется в верхнюю и нижнюю часть проекта, как описано ранее.
Чтобы указать определенную версию пакета SDK, добавьте его в Sdk
атрибут:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Использование элемента верхнего уровня Sdk
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Неявный импорт добавляется в верхнюю и нижнюю часть проекта, как описано ранее.
Атрибут Version
не требуется.
Используйте элемент Import
в любом месте вашего проекта
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
При явном включении импорта в проект у вас есть полный контроль над заказом.
При использовании Import
элемента можно также указать необязательный Version
атрибут. Например, можно указать <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Предупреждение
Если вы измените проект на использование Import
элементов, убедитесь, что вы добавляете как .props
, так и .targets
, и удаляете SDK из Project
элемента и Sdk
элементов. Невыполнение этого приведет к дублированию импорта и предупреждению MSB4011
.
Разрешение пакетов SDK для проекта
При оценке импорта MSBuild динамически разрешает путь к пакету SDK проекта на основе указанного имени и версии. MSBuild также содержит список зарегистрированных сопоставителей SDK, которые являются модулями, находящими пакеты SDK для проектов на вашем компьютере. Эти подключаемые модули включают:
Сопоставитель на основе NuGet, который запрашивает настроенные источники пакетов для пакетов NuGet, соответствующих указанному вами идентификатору и версии SDK.
Этот резолвер активен только при указании дополнительной версии. Его можно использовать для любого пользовательского пакета SDK проекта.
Сопоставитель пакета SDK для .NET, который разрешает пакеты SDK MSBuild, установленные с помощью пакета SDK для .NET.
Этот сопоставитель находит пакеты SDK для проекта, такие как
Microsoft.NET.Sdk
иMicrosoft.NET.Sdk.Web
которые являются частью продукта.Сопоставитель по умолчанию, определяющий SDK, установленные с помощью MSBuild.
Сопоставитель пакета SDK на основе NuGet поддерживает указание версии в файлеglobal.json , что позволяет управлять версией пакета SDK для проекта в одном месте, а не в каждом отдельном проекте:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Во время сборки можно использовать только одну версию каждого пакета SDK для проекта. Если вы ссылаетесь на две разные версии одного пакета SDK для проекта, MSBuild выдает предупреждение. Рекомендуется не указывать версию в проектах, если в файле global.json указана версия.