Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan referera till all bygginfrastruktur som krävs för en utvecklingsteknikstack, till exempel .NET SDK, genom att referera till en uppsättning egenskaper och mål som tillsammans kallas för ett projekt-SDK med dess specifika ID. ID:t refererar till en viss uppsättning .props
filer som innehåller egenskapsdefinitioner och .targets
filer som innehåller måldefinitioner. Du refererar till projektets SDK genom att använda Sdk
attributet på top-nivå projektnoden.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Under utvärderingen av projektet lägger MSBuild till implicita importer överst och längst ned i projektfilen:
<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>
Det finns många SDK:er som distribueras av Microsoft. Projekt-SDK:t som refererades i föregående exempel har monikern Microsoft.NET.Sdk
. De projekt-SDK:er som är associerade med .NET Core och .NET 5 och senare visas i översikten över .NET Project SDK.
Referera till ett projekt-SDK
Det finns tre sätt att referera till ett projekt-SDK:
Använd attributet Sdk
för elementet Project
<Project Sdk="My.Custom.Sdk">
...
</Project>
En implicit import läggs till överst och längst ned i projektet enligt beskrivningen tidigare.
Om du vill ange en specifik version av SDK lägger du till den i Sdk
attributet:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Använd Sdk
-elementet på den översta nivån
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
En implicit import läggs till överst och längst ned i projektet enligt beskrivningen tidigare.
Attributet Version
krävs inte.
Använd elementet Import
var som helst i projektet
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
När du uttryckligen inkluderar importen i projektet har du fullständig kontroll över ordern.
När du använder elementet Import
kan du också ange ett valfritt Version
attribut. Du kan till exempel ange <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Varning
Om du ändrar ditt projekt till att använda Import
-element, se till att du lägger till både .props
och .targets
-importer och att du tar bort SDK:t från Project
-elementet och Sdk
-elementen. Om du inte gör det kommer det resultera i dubbla importer och en MSB4011
varning.
Så här löses projekt-SDK:er
När du utvärderar importen löser MSBuild dynamiskt sökvägen till projekt-SDK:n baserat på det namn och den version som du angav. MSBuild har också en lista över registrerade SDK-matchare, som är plugin-program som hittar projekt-SDK:er på datorn. Dessa plugin-program omfattar:
En lösare som bygger på NuGet och som använder dina konfigurerade paketkällor för att söka efter NuGet-paket som matchar ID:t och versionen av det SDK som du har specificerat.
Den här lösaren är endast aktiv om du har angett en frivillig version. Den kan användas för valfritt anpassat projekt-SDK.
En .NET SDK-matchare som löser MSBuild SDK:er som är installerade med .NET SDK.
Den här lösaren letar upp projekt-SDK:er, t.ex.
Microsoft.NET.Sdk
ochMicrosoft.NET.Sdk.Web
, som ingår i produkten.En standardlösare som löser SDK:er som har installerats med MSBuild.
Den NuGet-baserade SDK-matcharen har stöd för att ange en version i global.json-filen , vilket gör att du kan styra projekt-SDK-versionen på ett ställe i stället för i varje enskilt projekt:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Endast en version av varje projekt-SDK kan användas under en version. Om du refererar till två olika versioner av samma projekt-SDK genererar MSBuild en varning. Vi rekommenderar att du inte anger en version i dina projekt om en version anges i filenglobal.json .