Udostępnij za pośrednictwem


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, do których odwołuje się w poprzednim przykładzie jego pseudonim Microsoft.NET.Sdk. Te 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>

Jawne uwzględnienie importu w projekcie umożliwia 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 zmieniasz projekt w celu używania <Import/> elementów, upewnij się, że dodasz zestaw .props SDK i .targets je importujesz, a zestaw SDK zostanie usunięty 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 i Microsoft.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.