Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode fazer referência a toda a infraestrutura de compilação necessária para uma pilha de tecnologia de desenvolvimento, como o SDK do .NET, simplesmente fazendo referência a um conjunto de propriedades e destinos conhecidos coletivamente como SDK de projeto por sua ID específica. A ID faz referência a um conjunto específico de ficheiros que contêm definições de propriedade de .props e ficheiros de .targets que contêm definições de destino. Você faz referência a um SDK de projeto usando o atributo Sdk no nó de projeto de nível superior.
<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 do 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>
Existem muitos SDKs distribuídos pela Microsoft. O SDK do projeto mencionado no exemplo anterior tem o apelido Microsoft.NET.Sdk. Os SDKs de projeto associados ao .NET Core e ao .NET 5 e posteriores estão listados na visão geral do SDK do .NET Project.
Fazer referência a um SDK de projeto
Há três maneiras de fazer referência a um SDK de projeto:
Utilize 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 Sdk ao atributo:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Usar o elemento de nível superior Sdk
<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 Version atributo não é obrigatório.
Use 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, você tem controle total sobre o pedido.
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" />.
Advertência
Se alterar o seu projeto para usar os elementos Import, certifique-se de adicionar as importações .props e .targets, e de remover o SDK dos elementos Project e Sdk. Se não o fizerem, haverá duplicação de importações e um MSB4011 aviso.
Como os SDKs de 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 especificados. O MSBuild também tem uma lista de resolvedores SDK registrados, que são plug-ins que localizam SDKs de projeto em sua máquina. Esses plug-ins incluem:
Um resolvedor baseado em NuGet que consulta seus feeds de pacotes configurados para pacotes NuGet que correspondam à ID e à versão do SDK que você especificou.
Esse resolvedor só estará ativo se você tiver especificado uma versão opcional. Ele pode ser usado para qualquer SDK de projeto personalizado.
Um solucionador de SDK do .NET que soluciona SDKs do MSBuild instalados com o .NET SDK.
Este 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 MSBuild.
O resolvedor SDK baseado em NuGet oferece 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, em vez de em cada projeto individual:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Apenas uma versão de cada SDK de projeto pode ser usada durante uma compilação. Se você fizer referência a duas versões diferentes do mesmo SDK de 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 .