Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede hacer referencia a toda la infraestructura de compilación necesaria para una pila de tecnología de desarrollo, como el SDK de .NET, simplemente haciendo referencia a un conjunto de propiedades y destinos conocidos colectivamente como SDK de proyecto por su identificador específico. El identificador hace referencia a un conjunto determinado de archivos .props
que contienen definiciones de propiedad y archivos .targets
que contienen definiciones de destino. Se hace referencia a un SDK de proyecto mediante el Sdk
atributo en el nodo de proyecto de nivel superior.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Durante la evaluación del proyecto, MSBuild agrega importaciones implícitas en la parte superior e inferior del archivo del proyecto:
<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>
Hay muchos SDK distribuidos por Microsoft. El SDK del proyecto al que se hace referencia en el ejemplo anterior tiene el moniker Microsoft.NET.Sdk
. Los SDK de proyecto asociados a .NET Core y .NET 5 y versiones posteriores se enumeran en La introducción al SDK de proyectos de .NET.
Referencia a un SDK de proyecto
Hay tres maneras de hacer referencia a un SDK de proyecto:
Uso del Sdk
atributo en el Project
elemento
<Project Sdk="My.Custom.Sdk">
...
</Project>
Se agrega una importación implícita a la parte superior e inferior del proyecto, como se explicó anteriormente.
Para especificar una versión específica del SDK, anexe al Sdk
atributo :
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Utilice el elemento de nivel superior Sdk
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Se agrega una importación implícita a la parte superior e inferior del proyecto, como se explicó anteriormente.
El atributo Version
no es necesario.
Usa el Import
elemento en cualquier parte del proyecto
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Al incluir explícitamente las importaciones en el proyecto, tiene control total sobre el pedido.
Al usar el Import
elemento , también puede especificar un atributo opcional Version
. Por ejemplo, puede especificar <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Advertencia
Si cambia el proyecto para que use elementos Import
, asegúrese de agregar las importaciones .props
y .targets
y de quitar el SDK del elemento Project
y los elementos Sdk
. Si no lo hace, se duplicarán las importaciones y se generará una MSB4011
advertencia.
Cómo se resuelven los SDK de proyecto
Al evaluar la importación, MSBuild resuelve dinámicamente la ruta de acceso al SDK del proyecto en función del nombre y la versión que especificó. MSBuild también tiene una lista de solucionadores de SDK registrados, que son complementos que buscan SDK de proyecto en la máquina. Estos complementos incluyen:
Solucionador basado en NuGet que consulta las fuentes de paquetes configuradas para paquetes NuGet que coinciden con el identificador y la versión del SDK que especificó.
Esta resolución solo está activa si especificó una versión opcional. Se puede usar para cualquier SDK de proyecto personalizado.
Resolución del SDK de .NET que resuelve los SDK de MSBuild que se instalan con el SDK de .NET.
Este solucionador localiza los SDK de proyecto, como
Microsoft.NET.Sdk
yMicrosoft.NET.Sdk.Web
que forman parte del producto.Solucionador predeterminado que resuelve los SDK que se instalaron con MSBuild.
El solucionador del SDK basado en NuGet admite la especificación de una versión en el archivo global.json , que permite controlar la versión del SDK del proyecto en un solo lugar en lugar de en cada proyecto individual:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Solo se puede usar una versión de cada SDK de proyecto durante una compilación. Si hace referencia a dos versiones diferentes del mismo SDK de proyecto, MSBuild emite una advertencia. Se recomienda no especificar una versión en los proyectos si se especifica una versión en el archivo global.json .