Usare SDK di progetto MSBuild
MSBuild 15.0 ha introdotto il concetto di "project SDK", che semplifica l'uso di software development kit che richiedono l'importazione di proprietà e destinazioni.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Durante la valutazione del progetto, MSBuild aggiunge importazioni implicite nella parte superiore e inferiore del file di progetto:
<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>
Fare riferimento a un SDK di progetto
Esistono tre modi per fare riferimento a un SDK di progetto:
Usare l'attributo Sdk
nell'elemento <Project/>
<Project Sdk="My.Custom.Sdk">
...
</Project>
Un'importazione implicita viene aggiunta alla parte superiore e inferiore del progetto, come illustrato in precedenza.
Per specificare una versione specifica dell'SDK, aggiungerla all'attributo Sdk
:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Usare l'elemento di primo livello <Sdk/>
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Un'importazione implicita viene aggiunta alla parte superiore e inferiore del progetto, come illustrato in precedenza.
L'attributo Version
non è obbligatorio.
Usare l'elemento <Import/>
in qualsiasi punto del progetto
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
L'inclusione esplicita delle importazioni nel progetto consente il controllo completo sull'ordine.
Quando si usa l'elemento <Import/>
è possibile specificare anche un attributo Version
facoltativo. Ad esempio, è possibile specificare <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Avviso
Se si modifica il progetto in modo da usare <Import/>
gli elementi, assicurarsi di aggiungere e .targets
.props
importare e rimuovere l'SDK dall'elemento <Project/>
e <Sdk/>
dagli elementi. In caso contrario, verranno generate importazioni raddoppiate e un MSB4011
avviso.
Come vengono risolti gli SDK di progetto
Quando si valuta l'importazione, MSBuild risolve in modo dinamico il percorso dell'SDK del progetto in base al nome e alla versione specificati. MSBuild include anche un elenco di resolver SDK registrati, che sono plug-in che individuano gli SDK di progetto nel computer. Questi plug-in includono:
Un resolver basato su NuGet che recupera i feed di pacchetto configurati per i pacchetti NuGet corrispondenti all'ID e alla versione dell'SDK specificati.
Questo sistema di risoluzione è attivo solo se è stata specificata una versione facoltativa. Può essere usato per qualsiasi SDK di progetto personalizzato.
Un resolver .NET SDK che risolve gli SDK di MSBuild installati con .NET SDK.
Questo sistema di risoluzione individua gli SDK del progetto, ad
Microsoft.NET.Sdk
esempio eMicrosoft.NET.Sdk.Web
che fanno parte del prodotto.Un resolver predefinito che risolve gli SDK che sono stati installati con MSBuild.
Il resolver SDK basato su NuGet supporta la specifica di una versione nel file global.json , che consente di controllare la versione dell'SDK del progetto in un'unica posizione anziché in ogni singolo progetto:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Durante una compilazione, è possibile usare una sola versione di ogni SDK di progetto. Se si fa riferimento a due versioni diverse dello stesso SDK del progetto, MSBuild genera un avviso. È consigliabile non specificare una versione nei progetti se nel file global.json è specificata una versione.
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per