MSBuild

Microsoft Build Engine je platforma pro vytváření aplikací. tento modul, který se také označuje jako MSBuild, poskytuje schéma XML pro soubor projektu, který určuje, jak platforma sestavení zpracovává a sestavuje software. Visual Studio používá MSBuild, ale MSBuild nezávisí na Visual Studio. vyvoláním msbuild.exe v souboru projektu nebo řešení můžete orchestrovat a sestavovat produkty v prostředích, kde není nainstalovaná Visual Studio.

Visual Studio používá MSBuild k načtení a sestavení spravovaných projektů. soubory projektu v Visual Studio (. csproj, . vbproj, . vcxproj a jiné) obsahují MSBuild XML kód, který se spouští při vytváření projektu pomocí rozhraní IDE. Visual Studio projekty importují veškerá potřebná nastavení a procesy sestavení pro provádění typických vývojových prací, ale můžete je roztáhnout nebo upravit v rámci Visual Studio nebo pomocí editoru XML.

počínaje Visual Studio 2022 se při sestavování v Visual Studio používá 64 verze MSBuild.

informace o MSBuild pro jazyk C++ naleznete v tématu MSBuild (C++).

následující příklady ilustrují, kdy můžete spustit sestavení vyvoláním MSBuild z příkazového řádku namísto rozhraní IDE Visual Studio.

  • Visual Studio není nainstalován. (stáhnout MSBuild bez Visual Studio.)

  • chcete použít 64 verzi MSBuild a používáte Visual Studio 2019 nebo starší. tato verze MSBuild je obvykle zbytečná, ale umožňuje MSBuild přístup k více paměti.

  • Chcete spustit sestavení ve více procesech. Můžete však použít rozhraní IDE k dosažení stejného výsledku pro projekty v jazyce C++ a C#.

  • Chcete upravit systém sestavení. Například může být vhodné povolit následující akce:

    • Předzpracovat soubory před tím, než dosáhnou kompilátoru.

    • Zkopírujte výstupy sestavení na jiné místo.

    • Vytvoří komprimované soubory z výstupů sestavení.

    • Proveďte krok po zpracování. Například může být vhodné razítko sestavení s jinou verzí.

můžete psát kód v Visual Studio integrovaném vývojovém prostředí, ale spouštět sestavení pomocí MSBuild. jako další alternativu můžete vytvořit kód v rozhraní IDE ve vývojovém počítači, ale spuštěním MSBuild z příkazového řádku vytvořit kód, který je integrován od více vývojářů. k sestavování projektů .net core můžete použít také rozhraní příkazového řádku .net core (CLI), které používá MSBuild.

Poznámka

můžete použít Azure Pipelines k automatické kompilaci, testování a nasazení vaší aplikace. Systém sestavení může automaticky spouštět sestavení při vrácení kódu se změnami vývojáři (například jako součást strategie průběžné integrace) nebo podle plánu (například sestavení testu na noční sestavení pro ověření). Azure Pipelines zkompiluje kód pomocí MSBuild. Další informace najdete v tématu Azure Pipelines.

Tento článek poskytuje přehled MSBuild. Úvodní kurz najdete v tématu Návod: použití MSBuild.

použití MSBuild na příkazovém řádku

chcete-li spustit MSBuild na příkazovém řádku, předejte soubor projektu do MSBuild.exe spolu s příslušnými parametry příkazového řádku. Možnosti příkazového řádku umožňují nastavit vlastnosti, spustit konkrétní cíle a nastavit další možnosti, které řídí proces sestavení. Například použijte následující syntaxi příkazového řádku k sestavení souboru MyProj. proj s Configuration vlastností nastavenou na Debug .

MSBuild.exe MyProj.proj -property:Configuration=Debug

další informace o MSBuild možností příkazového řádku najdete v tématu reference k příkazovému řádku.

Důležité

Před stažením projektu určete důvěryhodnost kódu.

soubor Project

MSBuild používá formát souboru projektu založeného na jazyce XML, který je jednoduchý a rozšiřitelný. MSBuild formát souboru projektu umožňuje vývojářům popsat položky, které mají být sestaveny, a také způsob jejich sestavení pro různé operační systémy a konfigurace. Kromě toho formát souboru projektu umožňuje vývojářům vytvářet opakovaně použitelná pravidla sestavení, která lze připravit na samostatné soubory, aby sestavení lze provádět konzistentně napříč různými projekty v produktu.

Visual Studio systém sestavení ukládá logiku specifickou pro projekt do samotného souboru projektu a používá importované soubory MSBuild XML s příponami jako . props a . targets pro definování standardní logiky sestavení. soubory . props definují MSBuild vlastností a soubory . targets definují MSBuild cíle. tyto importy jsou někdy viditelné v souboru projektu Visual Studio, ale v novějších projektech, jako jsou například .net Core, .net 5 a .net 6, nejsou v souboru projektu zobrazeny importy. místo toho se zobrazí odkaz na sadu SDK. Ty se nazývají projekty ve stylu sady SDK. Když odkazujete na sadu SDK, jako je například sada .NET SDK, importy souborů. props a. Target jsou implicitně určeny sadou SDK.

v následujících částech jsou popsány některé základní prvky formátu souboru projektu MSBuild. kurz o tom, jak vytvořit základní soubor projektu, naleznete v tématu návod: vytvoření souboru projektu MSBuild od začátku.

Vlastnosti

Vlastnosti reprezentující páry klíč/hodnota, které lze použít ke konfiguraci sestavení. Vlastnosti jsou deklarovány vytvořením prvku, který má název vlastnosti jako podřízený prvek elementu Property . Například následující kód vytvoří vlastnost s názvem BuildDir , která má hodnotu Build .

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

Můžete definovat vlastnost podmíněně umístěním Condition atributu v elementu. Obsah podmíněných elementů je ignorován, pokud není podmínka vyhodnocena jako true . V následujícím příkladu Configuration je definován prvek, pokud ještě nebyl definován.

<Configuration  Condition=" '$(Configuration)' == '' ">Debug</Configuration>

Na vlastnosti lze odkazovat v rámci souboru projektu pomocí syntaxe $ ( <PropertyName> ). Například můžete odkazovat na vlastnosti v předchozích příkladech pomocí $(BuildDir) a $(Configuration) .

další informace o vlastnostech naleznete v tématu MSBuild properties.

Položek

Položky jsou vstupy do systému sestavení a obvykle reprezentují soubory. Položky jsou seskupeny do typů položek na základě uživatelsky definovaných názvů položek. Tyto typy položek lze použít jako parametry pro úlohy, které používají jednotlivé položky k provedení kroků procesu sestavení.

Položky jsou deklarovány v souboru projektu vytvořením prvku, který má název typu položky jako podřízený prvek skupiny Item . Například následující kód vytvoří typ položky s názvem Compile , který obsahuje dva soubory.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

Na typy položek lze odkazovat v rámci souboru projektu pomocí syntaxe @ ( <ItemType> ). Například typ položky v příkladu se odkazuje pomocí @(Compile) .

v MSBuild názvy elementů a atributů rozlišují velká a malá písmena. Názvy vlastností, položek a metadat však nejsou. Následující příklad vytvoří typ položky Compile , comPile nebo jakoukoli jinou variaci velikosti písmen a poskytne položce Typ hodnota One. cs; Two. cs.

<ItemGroup>
  <Compile Include="one.cs" />
  <Compile Include="two.cs" />
</ItemGroup>

Položky mohou být deklarovány pomocí zástupných znaků a mohou obsahovat další metadata pro pokročilejší scénáře sestavení. Další informace o položkách naleznete v tématu Items.

Provádění

úlohy jsou jednotky spustitelného kódu, který MSBuild projekty používají k provádění operací sestavení. Například úloha může kompilovat vstupní soubory nebo spustit externí nástroj. Úlohy se dají znovu použít a můžou je sdílet s různými vývojáři v různých projektech.

logika spuštění úkolu je zapsána ve spravovaném kódu a mapována na MSBuild pomocí elementu UsingTask . Vlastní úlohu můžete napsat vytvářením spravovaného typu, který implementuje ITask rozhraní. Další informace o tom, jak psát úlohy, najdete v tématu psaní úloh.

MSBuild obsahují běžné úlohy, které můžete upravit tak, aby vyhovovaly vašim požadavkům. Příklady jsou kopie, které kopírují soubory, MakeDir –, které vytvářejí adresáře a CSC, které kompiluje soubory zdrojového kódu jazyka Visual C#. Seznam dostupných úloh spolu s informacemi o použití naleznete v tématu Task reference.

úloha je spuštěna v souboru MSBuild projektu vytvořením prvku, který má název úkolu jako podřízený prvek cílového prvku. Úlohy obvykle přijímají parametry, které jsou předány jako atributy elementu. jako parametry lze použít jak vlastnosti MSBuild, tak i položky. Například následující kód volá úlohu MakeDir – a předá jí hodnotu BuildDir vlastnosti, která byla deklarována v předchozím příkladu.

<Target Name="MakeBuildDirectory">
    <MakeDir  Directories="$(BuildDir)" />
</Target>

Další informace o úlohách najdete v tématu úlohy.

Cíle

Cílí seskupení úkolů v určitém pořadí a vystavení oddílů souboru projektu jako vstupní body do procesu sestavení. Cíle jsou často seskupené do logických oddílů ke zvýšení čitelnosti a k umožnění rozšíření. Přerušení kroků sestavení do cílů umožňuje volat jednu část procesu sestavení z jiných cílů bez kopírování tohoto oddílu kódu do každého cíle. Například pokud několik vstupních bodů do procesu sestavení vyžaduje, aby byly sestaveny odkazy, můžete vytvořit cíl, který sestaví odkazy a potom spustí tento cíl z každého vstupního bodu, kde je vyžadován.

Cíle jsou deklarovány v souboru projektu pomocí cílového prvku. Například následující kód vytvoří cíl s názvem Compile , který pak zavolá úlohu CSC , která má seznam položek deklarovaný v předchozím příkladu.

<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

V pokročilejších scénářích lze cíle použít k popisu vztahů mezi sebou a provádět analýzu závislostí, aby bylo možné přeskočit celé části procesu sestavení, pokud je tento cíl aktuální. Další informace o cílech najdete v tématu cíle.

Protokoly sestavení

Zprávy o chybách, upozorněních a zprávách sestavení můžete protokolovat do konzoly nebo jiného výstupního zařízení. Další informace najdete v tématu získání protokolů sestavení a přihlášení MSBuild.

použití MSBuild v Visual Studio

Visual Studio používá formát souboru projektu MSBuild k ukládání informací o sestavení spravovaných projektů. nastavení Project, která jsou přidána nebo změněna pomocí rozhraní Visual Studio, se projeví v . * soubor proj , který je vygenerován pro každý projekt. Visual Studio používá hostovanou instanci MSBuild k sestavení spravovaných projektů. to znamená, že spravovaný projekt může být sestaven Visual Studio nebo na příkazovém řádku (i v případě, že Visual Studio není nainstalován) a výsledky budou stejné.

kurz týkající se použití MSBuild v Visual Studio najdete v tématu návod: použití MSBuild.

Cílení na více verzí

pomocí Visual Studio můžete zkompilovat aplikaci pro spuštění v některé z několika verzí .NET Framework. například můžete zkompilovat aplikaci pro spuštění na .NET Framework 2,0 na 32 platformě a můžete zkompilovat stejnou aplikaci, aby běžela na .NET Framework 4,5 64 na 16bitové platformě. Možnost kompilace do více než jednoho rozhraní se nazývá cílení na více verzí.

Toto jsou některé z výhod cílení na více verzí:

  • můžete vyvíjet aplikace, které cílí na starší verze .NET Framework, například verze 3,5 a 4.7.2.

  • Můžete cílit na profil rozhraní, což je předdefinovaná podmnožina cílové architektury.

  • pokud se uvolní aktualizace service pack pro aktuální verzi .NET Framework, můžete na ni cílit.

  • Cílení na více verzí zaručuje, že aplikace používá pouze funkce, které jsou k dispozici v cílové architektuře a platformě.

Další informace najdete v tématu cílenína více verzí.

Viz také

Nadpis Popis
Návod: Vytvoření souboru projektu MSBuild od začátku Ukazuje, jak vytvořit soubor základního projektu přírůstkově pomocí pouze textového editoru.
Návod: Použití nástroje MSBuild zavádí stavební kameny MSBuild a ukazuje, jak psát, manipulovat a ladit MSBuild projektů bez nutnosti zavřít Visual Studio IDE.
Koncepty nástroje MSBuild představuje čtyři stavební kameny MSBuild: vlastnosti, položky, cíle a úkoly.
Položky v této části najdete popis obecných konceptů za MSBuild formátu souboru a způsobu, jakým se tyto části vejdou dohromady.
vlastnosti nástroje MSBuild Zavádí vlastnosti a kolekce vlastností. Vlastnosti jsou páry klíč/hodnota, které lze použít ke konfiguraci sestavení.
Targets Vysvětluje, jak seskupit úkoly společně v určitém pořadí a povolit části procesu sestavení, které mají být volány v příkazovém řádku.
Úlohy ukazuje, jak vytvořit jednotku spustitelného kódu, který lze použít MSBuild k provádění atomických operací sestavení.
Podmínky popisuje, jak používat Condition atribut v prvku MSBuild.
Pokročilé koncepty Prezentuje dávkování, provádění transformací, cílení na více verzí a další pokročilé techniky.
Protokolování v nástroji MSBuild Popisuje, jak protokolovat události sestavení, zprávy a chyby.
Jak MSBuild sestavuje projekty Popisuje vnitřní proces sestavení používaný v rámci MSBuild
Další materiály Obsahuje seznam prostředků komunity a podpory, kde najdete další informace o MSBuild.

Reference

  • odkaz na MSBuild
    Obsahuje odkazy na témata, která obsahují referenční informace.

  • Slovník
    definuje běžné MSBuildé výrazy.