Korzystanie z zestawów SDK projektu MSBuild
Możesz odwoływać się do całej infrastruktury kompilacji wymaganej dla stosu technologii deweloperskiej, takiego jak zestaw SDK platformy .NET, po prostu odwołując się do zestawu właściwości i obiektów docelowych znanych zbiorczo jako zestaw SDK projektu według określonego identyfikatora. Identyfikator odwołuje się do określonego .props
zestawu plików zawierających definicje właściwości i .targets
pliki zawierające definicje obiektów docelowych. Odwołujesz się do zestawu SDK projektu przy użyciu atrybutu Sdk
w węźle projektu najwyższego poziomu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Podczas oceny projektu program MSBuild dodaje niejawne importy w górnej i dolnej części pliku projektu:
<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>
Istnieje wiele zestawów SDK dystrybuowanych przez firmę Microsoft. Zestaw SDK projektu, do których odwołuje się w poprzednim przykładzie, ma nazwę Microsoft.NET.Sdk
. Zestawy SDK projektu skojarzone z platformami .NET Core i .NET 5 i nowszymi są wymienione w temacie Omówienie zestawu .NET Project SDK.
Odwołuje się do zestawu SDK projektu
Istnieją trzy sposoby odwołowania się do zestawu SDK projektu:
Użyj atrybutu Sdk
w elemecie <Project/>
<Project Sdk="My.Custom.Sdk">
...
</Project>
Import niejawny jest dodawany do góry i dolnej części projektu, jak wspomniano wcześniej.
Aby określić określoną wersję zestawu SDK, dołącz go do atrybutu Sdk
:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Korzystanie z elementu najwyższego poziomu <Sdk/>
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Import niejawny jest dodawany do góry i dolnej części projektu, jak wspomniano wcześniej.
Atrybut Version
nie jest wymagany.
Używanie elementu w <Import/>
dowolnym miejscu w projekcie
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Po jawnym dołączeniu importu do projektu masz pełną kontrolę nad kolejnością.
W przypadku korzystania z <Import/>
elementu można również określić opcjonalny Version
atrybut. Można na przykład określić wartość <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Ostrzeżenie
Jeśli zmienisz projekt tak, aby używał <Import/>
elementów, upewnij się, że dodasz zestaw .props
SDK i .targets
importujesz go, a następnie usuniesz zestaw SDK z <Project/>
elementu i <Sdk/>
elementów. Nie można tego zrobić, spowoduje dwukrotne zaimportowanie i MSB4011
ostrzeżenie.
Jak są rozwiązywane zestawy SDK projektu
Podczas oceniania importu program MSBuild dynamicznie rozpoznaje ścieżkę do zestawu SDK projektu na podstawie podanej nazwy i wersji. Program MSBuild zawiera również listę zarejestrowanych narzędzi rozpoznawania zestawów SDK, które są wtyczkami, które lokalizują zestawy SDK projektu na maszynie. Te wtyczki obejmują:
Program rozpoznawania pakietów NuGet, który wysyła zapytania do skonfigurowanych źródeł danych pakietów dla pakietów NuGet, które pasują do określonego identyfikatora i wersji zestawu SDK.
Ten program rozpoznawania nazw jest aktywny tylko wtedy, gdy określono opcjonalną wersję. Można go używać dla dowolnego niestandardowego zestawu SDK projektu.
Program rozpoznawania zestawu SDK platformy .NET, który rozwiązuje problemy z zestawami SDK programu MSBuild zainstalowanymi za pomocą zestawu .NET SDK.
Ten program rozpoznawania lokalizuje zestawy SDK projektu, takie jak
Microsoft.NET.Sdk
iMicrosoft.NET.Sdk.Web
które są częścią produktu.Domyślny program rozpoznawania rozpoznawania zestawów SDK zainstalowanych w programie MSBuild.
Narzędzie rozpoznawania zestawu SDK opartego na nuGet obsługuje określanie wersji w pliku global.json , co umożliwia kontrolowanie wersji zestawu SDK projektu w jednym miejscu, a nie w każdym projekcie:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Podczas kompilacji można używać tylko jednej wersji każdego zestawu SDK projektu. Jeśli odwołujesz się do dwóch różnych wersji tego samego zestawu SDK projektu, program MSBuild emituje ostrzeżenie. Zaleca się, aby nie określać wersji w projektach, jeśli wersja jest określona w pliku global.json.