Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode referenciar toda a infraestrutura de build necessária para uma pilha de tecnologia de desenvolvimento, como o .NET SDK, simplesmente ao referenciar um conjunto de propriedades e destinos coletivamente conhecido como SDK de projeto pela sua identificação específica. O ID faz referência a um conjunto específico de .props arquivos que contêm definições de propriedade e de .targets arquivos que contêm definições de destino. Você faz referência a um SDK de projeto usando o atributo Sdk no nó de nível superior do projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Durante a avaliação do projeto, o MSBuild adiciona importações implícitas na parte superior e inferior do arquivo de projeto:
<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>
Há muitos SDKs distribuídos pela Microsoft. O SDK do projeto referenciado no exemplo anterior tem o moniker Microsoft.NET.Sdk. Os SDKs do projeto associados ao .NET Core e ao .NET 5 e posteriores são listados na visão geral do SDK do Projeto do .NET.
Referenciar um SDK de projeto
Há três maneiras de fazer referência a um SDK do projeto:
Use o atributo Sdk no elemento Project
<Project Sdk="My.Custom.Sdk">
...
</Project>
Uma importação implícita é adicionada à parte superior e inferior do projeto, conforme discutido anteriormente.
Para especificar uma versão específica do SDK, acrescente-a ao Sdk atributo:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Usar o elemento de nível Sdk superior
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Uma importação implícita é adicionada à parte superior e inferior do projeto, conforme discutido anteriormente.
O atributo Version não é obrigatório.
Usar o Import elemento em qualquer lugar do seu projeto
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Quando você inclui explicitamente as importações em seu projeto, tem controle total sobre a ordem.
Ao usar o Import elemento, você também pode especificar um atributo opcional Version . Por exemplo, você pode especificar <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />.
Aviso
Se você alterar seu projeto para usar os elementos Import, certifique-se de adicionar ambas as importações .props e .targets, e de remover o SDK do elemento Project e dos elementos Sdk. A falha ao fazer isso resultará em importações duplicadas e um MSB4011 aviso.
Como os SDKs do projeto são resolvidos
Ao avaliar a importação, o MSBuild resolve dinamicamente o caminho para o SDK do projeto com base no nome e na versão especificadas. O MSBuild também tem uma lista de resolvedores do SDK registrados, que são plug-ins que localizam SDKs de projeto em seu computador. Esses plug-ins incluem:
Um resolvedor baseado em NuGet que consulta os feeds de pacotes que você configurou em busca de pacotes NuGet que correspondam à ID e versão do SDK que você especificou.
Esse resolvedor só estará ativo se você especificou uma versão opcional. Ele pode ser usado para qualquer SDK de projeto personalizado.
Um resolvedor do SDK do .NET que resolve os SDKs do MSBuild instalados com o SDK do .NET.
Esse resolvedor localiza SDKs de projeto, como
Microsoft.NET.SdkeMicrosoft.NET.Sdk.Webque fazem parte do produto.Um resolvedor padrão que resolve SDKs que foram instalados com o MSBuild.
O resolvedor do SDK baseado em NuGet dá suporte à especificação de uma versão no arquivo global.json , que permite controlar a versão do SDK do projeto em um só lugar e não em cada projeto individual:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Somente uma versão de cada SDK de projeto pode ser usada durante um build. Se você fizer referência a duas versões diferentes do mesmo SDK do projeto, o MSBuild emitirá um aviso. É recomendável não especificar uma versão em seus projetos se uma versão for especificada no arquivo global.json .