MSBuildMSBuild

Microsoft Build Engine je platforma pro vytváření aplikací.The Microsoft Build Engine is a platform for building applications. Tento modul, který je také známý jako MSBuild, poskytuje schéma XML pro soubor projektu, který určuje, jak platforma sestavení zpracovává a sestavuje software.This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software. Visual Studio používá MSBuild, ale nástroj MSBuild nezávisí na aplikaci Visual Studio.Visual Studio uses MSBuild, but MSBuild doesn't depend on 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í nainstalována aplikace Visual Studio.By invoking msbuild.exe on your project or solution file, you can orchestrate and build products in environments where Visual Studio isn't installed.

Visual Studio používá MSBuild k načtení a sestavení spravovaných projektů.Visual Studio uses MSBuild to load and build managed projects. Soubory projektu v aplikaci Visual Studio ( . csproj , vbproj , . vcxproj a jiné) obsahují kód XML nástroje MSBuild, který se spouští při vytváření projektu pomocí integrovaného vývojového prostředí (IDE).The project files in Visual Studio ( .csproj , .vbproj , .vcxproj , and others) contain MSBuild XML code that executes when you build a project by using the IDE. Projekty sady Visual Studio 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 sady Visual Studio nebo pomocí editoru XML.Visual Studio projects import all the necessary settings and build processes to do typical development work, but you can extend or modify them from within Visual Studio or by using an XML editor.

Informace o nástroji MSBuild pro jazyk C++ naleznete v tématu MSBuild (C++).For information about MSBuild for C++, see MSBuild (C++).

Následující příklady ilustrují, když můžete spustit sestavení voláním MSBuild z příkazového řádku namísto integrovaného vývojového prostředí (IDE) sady Visual Studio.The following examples illustrate when you might run builds by invoking MSBuild from the command line instead of the Visual Studio IDE.

  • Visual Studio není nainstalované.Visual Studio isn't installed. (Stáhnout MSBuild bez sady Visual Studio.)(Download MSBuild without Visual Studio.)

  • Chcete použít 64 verzi nástroje MSBuild.You want to use the 64-bit version of MSBuild. Tato verze nástroje MSBuild je obvykle zbytečná, ale umožňuje nástroji MSBuild získat přístup k více paměti.This version of MSBuild is usually unnecessary, but it allows MSBuild to access more memory.

  • Chcete spustit sestavení ve více procesech.You want to run a build in multiple processes. Můžete však použít rozhraní IDE k dosažení stejného výsledku pro projekty v jazyce C++ a C#.However, you can use the IDE to achieve the same result on projects in C++ and C#.

  • Chcete upravit systém sestavení.You want to modify the build system. Například může být vhodné povolit následující akce:For example, you might want to enable the following actions:

    • Předzpracovat soubory před tím, než dosáhnou kompilátoru.Preprocess files before they reach the compiler.

    • Zkopírujte výstupy sestavení na jiné místo.Copy the build outputs to a different place.

    • Vytvoří komprimované soubory z výstupů sestavení.Create compressed files from build outputs.

    • Proveďte krok po zpracování.Do a post-processing step. Například může být vhodné razítko sestavení s jinou verzí.For example, you might want to stamp an assembly with a different version.

Můžete napsat kód v integrovaném vývojovém prostředí sady Visual Studio, ale spustit sestavení pomocí nástroje MSBuild.You can write code in the Visual Studio IDE but run builds by using MSBuild. Jako další alternativu můžete vytvořit kód v rozhraní IDE na vývojovém počítači, ale spustit nástroj MSBuild z příkazového řádku a vytvořit kód, který je integrován od více vývojářů.As another alternative, you can build code in the IDE on a development computer but run MSBuild from the command line to build code that's integrated from multiple developers. K sestavování projektů .NET Core můžete použít také rozhraní příkazového řádku (CLI) .NET Core, které používá nástroj MSBuild.You can also use the .NET Core command-line interface (CLI), which uses MSBuild, to build .NET Core projects.

Poznámka

Můžete použít Azure Pipelines k automatické kompilaci, testování a nasazení vaší aplikace.You can use Azure Pipelines to automatically compile, test, and deploy your application. 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í).Your build system can automatically run builds when developers check in code (for example, as part of a Continuous Integration strategy) or according to a schedule (for example, a nightly Build Verification Test build). Azure Pipelines zkompiluje kód pomocí nástroje MSBuild.Azure Pipelines compiles your code by using MSBuild. Další informace najdete v tématu Azure Pipelines.For more information, see Azure Pipelines.

Tento článek poskytuje přehled nástroje MSBuild.This article provides an overview of MSBuild. Úvodní kurz najdete v tématu Návod: použití nástroje MSBuild.For an introductory tutorial, see Walkthrough: Using MSBuild.

Použití nástroje MSBuild na příkazovém řádkuUse MSBuild at a command prompt

Chcete-li spustit nástroj MSBuild na příkazovém řádku, předejte soubor projektu do MSBuild.exe spolu s příslušnými parametry příkazového řádku.To run MSBuild at a command prompt, pass a project file to MSBuild.exe , together with the appropriate command-line options. Možnosti příkazového řádku umožňují nastavit vlastnosti, spustit konkrétní cíle a nastavit další možnosti, které řídí proces sestavení.Command-line options let you set properties, execute specific targets, and set other options that control the build process. Například použijte následující syntaxi příkazového řádku k sestavení souboru MyProj. proj s Configuration vlastností nastavenou na Debug .For example, you would use the following command-line syntax to build the file MyProj.proj with the Configuration property set to Debug.

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

Další informace o možnostech příkazového řádku MSBuild naleznete v tématu Reference k příkazovému řádku.For more information about MSBuild command-line options, see Command-line reference.

Důležité

Před stažením projektu určete důvěryhodnost kódu.Before you download a project, determine the trustworthiness of the code.

Soubor projektuProject file

Nástroj MSBuild používá formát souboru projektu založeného na jazyce XML, který je jednoduchý a rozšiřitelný.MSBuild uses an XML-based project file format that's straightforward and extensible. Formát souboru projektu MSBuild 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.The MSBuild project file format lets developers describe the items that are to be built, and also how they are to be built for different operating systems and configurations. 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.In addition, the project file format lets developers author reusable build rules that can be factored into separate files so that builds can be performed consistently across different projects in the product.

Následující části popisují některé základní prvky formátu souboru projektu MSBuild.The following sections describe some of the basic elements of the MSBuild project file format. Kurz o tom, jak vytvořit základní soubor projektu, naleznete v tématu Návod: vytvoření souboru projektu MSBuild od začátku.For a tutorial about how to create a basic project file, see Walkthrough: Creating an MSBuild project file from scratch.

VlastnostiProperties

Vlastnosti reprezentující páry klíč/hodnota, které lze použít ke konfiguraci sestavení.Properties represent key/value pairs that can be used to configure builds. Vlastnosti jsou deklarovány vytvořením prvku, který má název vlastnosti jako podřízený prvek elementu Property .Properties are declared by creating an element that has the name of the property as a child of a PropertyGroup element. Například následující kód vytvoří vlastnost s názvem BuildDir , která má hodnotu Build .For example, the following code creates a property named BuildDir that has a value of Build.

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

Můžete definovat vlastnost podmíněně umístěním Condition atributu v elementu.You can define a property conditionally by placing a Condition attribute in the element. Obsah podmíněných elementů je ignorován, pokud není podmínka vyhodnocena jako true .The contents of conditional elements are ignored unless the condition evaluates to true. V následujícím příkladu Configuration je definován prvek, pokud ještě nebyl definován.In the following example, the Configuration element is defined if it hasn't yet been defined.

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

Na vlastnosti lze odkazovat v rámci souboru projektu pomocí syntaxe $ ( <PropertyName> ).Properties can be referenced throughout the project file by using the syntax $(<PropertyName>). Například můžete odkazovat na vlastnosti v předchozích příkladech pomocí $(BuildDir) a $(Configuration) .For example, you can reference the properties in the previous examples by using $(BuildDir) and $(Configuration).

Další informace o vlastnostech naleznete v tématu MSBuild Properties.For more information about properties, see MSBuild properties.

PoložekItems

Položky jsou vstupy do systému sestavení a obvykle reprezentují soubory.Items are inputs into the build system and typically represent files. Položky jsou seskupeny do typů položek na základě uživatelsky definovaných názvů položek.Items are grouped into item types based on user-defined item names. Tyto typy položek lze použít jako parametry pro úlohy, které používají jednotlivé položky k provedení kroků procesu sestavení.These item types can be used as parameters for tasks, which use the individual items to perform the steps of the build process.

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 .Items are declared in the project file by creating an element that has the name of the item type as a child of an ItemGroup element. Například následující kód vytvoří typ položky s názvem Compile , který obsahuje dva soubory.For example, the following code creates an item type named Compile, which includes two files.

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

Na typy položek lze odkazovat v rámci souboru projektu pomocí syntaxe @ ( <ItemType> ).Item types can be referenced throughout the project file by using the syntax @(<ItemType>). Například typ položky v příkladu se odkazuje pomocí @(Compile) .For example, the item type in the example would be referenced by using @(Compile).

V nástroji MSBuild názvy elementů a atributů rozlišují velká a malá písmena.In MSBuild, element and attribute names are case-sensitive. Názvy vlastností, položek a metadat však nejsou.However, property, item, and metadata names are not. 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.The following example creates the item type Compile, comPile, or any other case variation, and gives the item type the value "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í.Items can be declared by using wildcard characters and may contain additional metadata for more advanced build scenarios. Další informace o položkách naleznete v tématu Items.For more information about items, see Items.

ProváděníTasks

Úlohy jsou jednotky spustitelného kódu, který projekty MSBuild používají k provádění operací sestavení.Tasks are units of executable code that MSBuild projects use to perform build operations. Například úloha může kompilovat vstupní soubory nebo spustit externí nástroj.For example, a task might compile input files or run an external tool. Úlohy se dají znovu použít a můžou je sdílet s různými vývojáři v různých projektech.Tasks can be reused, and they can be shared by different developers in different projects.

Logika spuštění úkolu je zapsána ve spravovaném kódu a mapována na MSBuild pomocí elementu UsingTask .The execution logic of a task is written in managed code and mapped to MSBuild by using the UsingTask element. Vlastní úlohu můžete napsat vytvářením spravovaného typu, který implementuje ITask rozhraní.You can write your own task by authoring a managed type that implements the ITask interface. Další informace o tom, jak psát úlohy, najdete v tématu psaní úloh.For more information about how to write tasks, see Task writing.

Nástroj MSBuild obsahuje běžné úlohy, které lze upravit tak, aby vyhovovaly vašim požadavkům.MSBuild includes common tasks that you can modify to suit your requirements. 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#.Examples are Copy, which copies files, MakeDir, which creates directories, and Csc, which compiles Visual C# source code files. Seznam dostupných úloh spolu s informacemi o použití naleznete v tématu Task reference.For a list of available tasks together with usage information, see Task reference.

Úloha je spuštěna v souboru projektu MSBuild vytvořením prvku, který má název úkolu jako podřízený prvek cílového prvku.A task is executed in an MSBuild project file by creating an element that has the name of the task as a child of a Target element. Úlohy obvykle přijímají parametry, které jsou předány jako atributy elementu.Tasks typically accept parameters, which are passed as attributes of the element. Jako parametry lze použít jak vlastnosti a položky nástroje MSBuild.Both MSBuild properties and items can be used as parameters. 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.For example, the following code calls the MakeDir task and passes it the value of the BuildDir property that was declared in the earlier example.

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

Další informace o úlohách najdete v tématu úlohy.For more information about tasks, see Tasks.

CíleTargets

Cílí seskupení úkolů v určitém pořadí a vystavení oddílů souboru projektu jako vstupní body do procesu sestavení.Targets group tasks together in a particular order and expose sections of the project file as entry points into the build process. Cíle jsou často seskupené do logických oddílů ke zvýšení čitelnosti a k umožnění rozšíření.Targets are often grouped into logical sections to increase readability and to allow for expansion. 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.Breaking the build steps into targets lets you call one piece of the build process from other targets without copying that section of code into every target. 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.For example, if several entry points into the build process require references to be built, you can create a target that builds references and then run that target from every entry point where it's required.

Cíle jsou deklarovány v souboru projektu pomocí cílového prvku.Targets are declared in the project file by using the Target element. 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.For example, the following code creates a target named Compile, which then calls the Csc task that has the item list that was declared in the earlier example.

<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í.In more advanced scenarios, targets can be used to describe relationships among one another and perform dependency analysis so that whole sections of the build process can be skipped if that target is up-to-date. Další informace o cílech najdete v tématu cíle.For more information about targets, see Targets.

Protokoly sestaveníBuild logs

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í.You can log build errors, warnings, and messages to the console or another output device. Další informace najdete v tématu získání protokolů sestavení a protokolování v nástroji MSBuild.For more information, see Obtaining build logs and Logging in MSBuild.

Použití nástroje MSBuild v aplikaci Visual StudioUse MSBuild in Visual Studio

Visual Studio používá formát souboru projektu MSBuild k ukládání informací o sestavení spravovaných projektů.Visual Studio uses the MSBuild project file format to store build information about managed projects. Nastavení projektu, která jsou přidána nebo změněna pomocí rozhraní sady Visual Studio, se projeví v . * soubor proj , který je vygenerován pro každý projekt.Project settings that are added or changed by using the Visual Studio interface are reflected in the .*proj file that's generated for every project. Visual Studio používá hostovanou instanci MSBuild k sestavení spravovaných projektů.Visual Studio uses a hosted instance of MSBuild to build managed projects. To znamená, že spravovaný projekt může být sestaven v aplikaci Visual Studio nebo na příkazovém řádku (i v případě, že není nainstalována aplikace Visual Studio) a výsledky budou stejné.This means that a managed project can be built in Visual Studio or at a command prompt (even if Visual Studio isn't installed), and the results will be identical.

Kurz týkající se použití nástroje MSBuild v aplikaci Visual Studio naleznete v tématu Návod: použití nástroje MSBuild.For a tutorial about how to use MSBuild in Visual Studio, see Walkthrough: Using MSBuild.

Cílení na více verzíMultitargeting

Pomocí sady Visual Studio můžete zkompilovat aplikaci pro spuštění v některé z několika verzí .NET Framework.By using Visual Studio, you can compile an application to run on any one of several versions of .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ě.For example, you can compile an application to run on .NET Framework 2.0 on a 32-bit platform, and you can compile the same application to run on .NET Framework 4.5 on a 64-bit platform. Možnost kompilace do více než jednoho rozhraní se nazývá cílení na více verzí.The ability to compile to more than one framework is named multitargeting.

Toto jsou některé z výhod cílení na více verzí:These are some of the benefits of multitargeting:

  • Můžete vyvíjet aplikace, které cílí na starší verze .NET Framework, například verze 2,0, 3,0 a 3,5.You can develop applications that target earlier versions of .NET Framework, for example, versions 2.0, 3.0, and 3.5.

  • Můžete cílit na jiné architektury než .NET Framework, například na Silverlight.You can target frameworks other than .NET Framework, for example, Silverlight.

  • Můžete cílit na profil rozhraní , což je předdefinovaná podmnožina cílové architektury.You can target a framework profile , which is a predefined subset of a target framework.

  • Pokud se uvolní aktualizace Service Pack pro aktuální verzi .NET Framework, můžete na ni cílit.If a service pack for the current version of .NET Framework is released, you could target it.

  • 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ě.Multitargeting guarantees that an application uses only the functionality that's available in the target framework and platform.

Další informace najdete v tématu cílenína více verzí.For more information, see Multitargeting.

Viz takéSee also

NadpisTitle PopisDescription
Návod: Vytvoření souboru projektu MSBuild od začátkuWalkthrough: Creating an MSBuild project file from scratch Ukazuje, jak vytvořit soubor základního projektu přírůstkově pomocí pouze textového editoru.Shows how to create a basic project file incrementally, by using only a text editor.
Návod: Použití nástroje MSBuildWalkthrough: Using MSBuild Zavádí stavební kameny nástroje MSBuild a ukazuje, jak psát, manipulovat a ladit projekty MSBuild bez zavření prostředí IDE sady Visual Studio.Introduces the building blocks of MSBuild and shows how to write, manipulate, and debug MSBuild projects without closing the Visual Studio IDE.
Koncepty nástroje MSBuildMSBuild concepts Představuje čtyři stavební kameny nástroje MSBuild: vlastnosti, položky, cíle a úkoly.Presents the four building blocks of MSBuild: properties, items, targets, and tasks.
PoložkyItems Popisuje obecné pojmy za formátem souboru MSBuild a způsob, jakým se tyto části vejdou dohromady.Describes the general concepts behind the MSBuild file format and how the pieces fit together.
vlastnosti nástroje MSBuildMSBuild properties Zavádí vlastnosti a kolekce vlastností.Introduces properties and property collections. Vlastnosti jsou páry klíč/hodnota, které lze použít ke konfiguraci sestavení.Properties are key/value pairs that can be used to configure builds.
TargetsTargets 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.Explains how to group tasks together in a particular order and enable sections of the build process to be called on the command line.
ÚlohyTasks Ukazuje, jak vytvořit jednotku spustitelného kódu, který může nástroj MSBuild použít k provedení atomických operací sestavení.Shows how to create a unit of executable code that can be used by MSBuild to perform atomic build operations.
PodmínkyConditions Popisuje, jak používat Condition atribut v elementu MSBuild.Discusses how to use the Condition attribute in an MSBuild element.
Pokročilé konceptyAdvanced concepts Prezentuje dávkování, provádění transformací, cílení na více verzí a další pokročilé techniky.Presents batching, performing transforms, multitargeting, and other advanced techniques.
Protokolování v nástroji MSBuildLogging in MSBuild Popisuje, jak protokolovat události sestavení, zprávy a chyby.Describes how to log build events, messages, and errors.
Jak MSBuild sestavuje projektyHow MSBuild builds projects Popisuje interní proces sestavení používaný v rámci nástroje MSBuild.Describes the internal build process used within MSBuild
Další materiályAdditional resources Obsahuje seznam prostředků komunity a podpory, kde najdete další informace o nástroji MSBuild.Lists community and support resources for more information about MSBuild.

Referenční informaceReference