Použití sad SDK projektu NÁSTROJE MSBuild

Můžete odkazovat na veškerou infrastrukturu sestavení potřebnou pro sadu vývojových technologií, jako je sada .NET SDK, jednoduše odkazováním na sadu vlastností a cílů, které se souhrnně označují jako sada SDK projektu podle jeho konkrétního ID. ID odkazuje na určitou sadu .props souborů, které obsahují definice vlastností, a .targets soubory, které obsahují cílové definice. Na sadu SDK projektu odkazujete pomocí atributu Sdk v uzlu projektu nejvyšší úrovně.

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net46</TargetFramework>
    </PropertyGroup>
</Project>

Během vyhodnocení projektu přidá nástroj MSBuild implicitní importy v horní a dolní části souboru 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>

Microsoft distribuuje mnoho sad SDK. Sada SDK projektu odkazovaná v předchozím příkladu má moniker Microsoft.NET.Sdk. Sady SDK projektu přidružené k .NET Core a .NET 5 a novějším jsou uvedené v přehledu sady .NET Project SDK.

Odkaz na sadu SDK projektu

Existují tři způsoby, jak odkazovat na sadu SDK projektu:

Sdk Použití atributu v elementu <Project/>

<Project Sdk="My.Custom.Sdk">
    ...
</Project>

Implicitní import se přidá do horní a dolní části projektu, jak je popsáno dříve.

Pokud chcete zadat konkrétní verzi sady SDK, připojte ji k atributu Sdk :

<Project Sdk="My.Custom.Sdk/1.2.3">
    ...
</Project>

Použití elementu nejvyšší úrovně <Sdk/>

<Project>
    <Sdk Name="My.Custom.Sdk" Version="1.2.3" />
    ...
</Project>

Implicitní import se přidá do horní a dolní části projektu, jak je popsáno dříve.

Atribut Version není povinný.

Použití elementu <Import/> kdekoli v projektu

<Project>
    <PropertyGroup>
        <MyProperty>Value</MyProperty>
    </PropertyGroup>
    <Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
    ...
    <Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>

Pokud do projektu explicitně zahrnete importy, máte plnou kontrolu nad pořadím.

Při použití elementu <Import/> můžete také zadat volitelný Version atribut. Můžete například zadat <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />.

Upozorňující

Pokud změníte projekt tak, aby používal <Import/> elementy, nezapomeňte přidat oba .props i .targets importy a odebrat sadu SDK z elementu a <Sdk/> elementů<Project/>. Pokud to neuděláte, bude výsledkem dvojité importy a MSB4011 upozornění.

Jak se řeší sady SDK projektu

Při vyhodnocování importu nástroj MSBuild dynamicky překládá cestu k sadě SDK projektu na základě zadaného názvu a verze. Nástroj MSBuild obsahuje také seznam registrovaných překladačů sdk, což jsou moduly plug-in, které na vašem počítači vyhlašují sady SDK projektu. Mezi tyto moduly plug-in patří:

  • Překladač založený na NuGetu, který se dotazuje na nakonfigurované kanály balíčků NuGet pro balíčky NuGet, které odpovídají ID a verzi sady SDK, kterou jste zadali.

    Tento překladač je aktivní pouze v případě, že jste zadali volitelnou verzi. Dá se použít pro libovolnou vlastní sadu SDK projektu.

  • Překladač sady .NET SDK, který překládá sady SDK NÁSTROJE MSBuild, které jsou nainstalovány se sadou .NET SDK.

    Tento překladač vyhledá sady SDK projektu, například Microsoft.NET.Sdk a Microsoft.NET.Sdk.Web které jsou součástí produktu.

  • Výchozí překladač, který řeší sady SDK nainstalované pomocí nástroje MSBuild.

Překladač sady SDK založený na NuGetu podporuje zadání verze v souboru global.json , který umožňuje řídit verzi sady SDK projektu na jednom místě, a ne na každém jednotlivém projektu:

{
    "msbuild-sdks": {
        "My.Custom.Sdk": "5.0.0",
        "My.Other.Sdk": "1.0.0-beta"
    }
}

Během sestavení lze použít pouze jednu verzi každé sady SDK projektu. Pokud odkazujete na dvě různé verze stejné sady SDK projektu, nástroj MSBuild vygeneruje upozornění. Pokud je verze zadaná v souboru global.json, nedoporučuje se ve vašich projektech zadávat verzi.