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
aMicrosoft.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.