Sdílet prostřednictvím


Názorný postup: Pomocí nástroje MSBuild

MSBuildje sestavení platformy Microsoft a Visual Studio.V tomto návodu se seznámíte s stavební bloky MSBuild a ukazuje, jak zapisovat, manipulaci a ladění projekty MSBuild.Informace o:

  • Vytváření a manipulaci s souboru projektu.

  • Použití vlastnosti sestavení

  • Jak používat sestavení položky.

Z aplikace Visual Studio nebo z příkazového řádku můžete spustit MSBuild.V tomto návodu vytvoříte souboru MSBuild projektu pomocí sady Visual Studio.Úprava souboru projektu sady Visual Studio a příkaz okno použít k sestavení projektu a zkontrolovat výsledky.

Vytváření projektu nástroje MSBuild

Systém projektu sady Visual Studio je založen na MSBuild.Usnadňuje vytvoření nového souboru projektu pomocí sady Visual Studio.V této části vytvoříte soubor projektu Visual C#.Můžete místo toho vytvořit soubor projektu jazyka Visual Basic.V rámci tohoto návodu je menší rozdíl mezi soubory projektu.

Chcete-li vytvořit soubor projektu

  1. Otevřete Visual Studio.

  2. V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).

  3. V Nový projekt vyberte položku Visual C# typ projektu a potom vyberte Model Windows Forms aplikace šablony.V název zadejte BuildApp.Zadejte umístění řešení, například D:\.Přijměte výchozí hodnoty pro vytvořit adresář pro řešení (vybrané) Přidat do zdrojového (není zaškrtnuto), a Název řešení (BuildApp).

    Klepněte na OK k vytvoření souboru projektu.

Soubor projektu

V předchozí části používá Visual Studio vytvoří soubor projektu Visual C#.Soubor projektu je zastoupena v Průzkumníku uzel projekt s názvem BuildApp.Editor kódu Visual Studio můžete prozkoumat soubor projektu.

Prozkoumat soubor projektu

  1. V Průzkumníku, klepněte na uzel projektu BuildApp.

  2. V Vlastnosti prohlížeč, Všimněte si, že Soubor projektu je vlastnost BuildApp.csproj.Všechny soubory projektu jsou pojmenovány s příponou "proj".Pokud jste vytvořili projekt jazyka Visual Basic, název souboru projektu by BuildApp.vbproj.

  3. Klepněte pravým tlačítkem myši na uzel projektu, klepněte na tlačítko Uvolnit projekt.

  4. Klepněte pravým tlačítkem na uzel projektu, klepněte na tlačítko Upravit BuildApp.csproj.

    Soubor projektu se zobrazí v editoru kódu.

Cíle a úkoly

Soubory projektu jsou soubory ve formátu XML s kořenový uzel projektu.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"  xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

V prvku projektu je nutné zadat obor názvů xmlns.

Vytváření aplikace práci s Target a úkol prvků.

  • Úkol je nejmenší jednotkou práce, jinými slovy, "atom" sestavení.Úkoly jsou nezávislé spustitelné komponenty, které mohou mít vstupů a výstupů.Nejsou žádné úkoly aktuálně odkazuje nebo definované v souboru projektu.Přidání úkolů do projektu soubor v následujících částech.Další informace získáte v tématu Nástroj MSBuild úkoly.

  • Cíl je pojmenovaná posloupnost úkolů.Existují dva cíle na konci souboru projektu, které jsou nyní uzavřeny v komentáře HTML: BeforeBuild a AfterBuild.

    <Target Name="BeforeBuild">
    </Target>
    <Target Name="AfterBuild">
    </Target>
    

    Další informace získáte v tématu Nástroj MSBuild cíle.

Volitelný DefaultTargets atribut, který vybere výchozí cíl sestavení v takovém sestavení má uzel projektu.

<Project ToolsVersion="4.0" DefaultTargets="Build" ...

Cíl sestavení není definován v souboru projektu.Místo toho po importu ze souboru Microsoft.CSharp.targets pomocí Import prvku.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Importované soubory jsou účinně vloženého do souboru projektu, ať jsou odkazovány.

MSBuild sleduje cíle sestavení a zaručuje, že každý cíl je sestavena více než jednou.

Přidání cíle a úlohy

Přidáte cílový soubor projektu.Přidání úkolu na cíl, který vytiskne zprávu.

Přidat cíl a úkol

  1. Přidejte tyto řádky pouze po příkazu Importovat soubor projektu:

    <Target Name="HelloWorld">
    </Target>
    

    Vytvoří cíl s názvem HelloWorld.Všimněte si, že máte podporu technologie Intellisense při úpravách souboru projektu.

  2. Přidáte řádky do cílové HelloWorld tak, aby výsledné oddílu vypadá takto:

    <Target Name="HelloWorld">
      <Message Text="Hello"></Message>
      <Message Text="World"></Message>
    </Target>
    
  3. Uložte soubor projektu.

Úkol zpráva je jedním z mnoha úkolů, které se dodává s nástrojem MSBuild.Úplný seznam dostupných úkoly a informace o použití naleznete v Úloha MSBuild odkaz.

Zpráva úkolu přebírá řetězec atributu Text jako vstup a zobrazí na výstupní zařízení.Cíl HelloWorld úkol zprávy provede dvakrát: nejprve zobrazíte Hello a potom zobrazit "World".

Vytváření cílové

Spustit nástroj MSBuild z Příkazový řádek Visual Studio vytvořit HelloWorld cíle definované výše.Pomocí přepínače příkazového řádku Target nebo /t vyberte cíl.

[!POZNÁMKA]

Jsme naleznete Příkazový řádek Visual Studio jako Okno příkaz v následujících částech.

Cíl sestavení

  1. Klepněte na Start, klepněte na Všechny programy.Vyhledejte a klepněte Příkazový řádek Visual Studio v Nástroje Visual Studio složky.

  2. Z okna příkazu přejděte do složky obsahující soubor projektu v tomto případě D:\BuildApp\BuildApp.

  3. Spusťte nástroj msbuild s /t:HelloWorld přepínač příkazu.To vybere a vytvoří HelloWorld cíl:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup v okno příkaz.Měli byste vidět dva řádky "Ahoj" a "World":

    Hello
    World
    

[!POZNÁMKA]

Pokud místo toho The target "HelloWorld" does not exist in the project pak pravděpodobně zapomněli uložit soubor projektu v editoru kódu.Uložte soubor a akci opakujte.

Střídavě v editoru kódu a okno příkazového řádku, můžete změnit soubor projektu a rychle zobrazit výsledky.

[!POZNÁMKA]

Pokud spustíte nástroj msbuild příkaz přepínač /t, msbuild vytvoří cíl dán atributu DefaultTarget elementu projektu v tomto případě "Sestavení".Toto sestavení aplikace model Windows Forms BuildApp.exe.

Vlastnosti sestavení

Vlastnosti sestavení jsou páry název hodnota, které provedou sestavení.Několik vlastností sestavení jsou již definovány v horní části souboru projektu:

<PropertyGroup>
...
  <ProductVersion>10.0.11107</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{30E3C9D5-FD86-4691-A331-80EA5BA7E571}</ProjectGuid>
  <OutputType>WinExe</OutputType>
...
</PropertyGroup>

Všechny vlastnosti jsou podřízené prvky prvků PropertyGroup.Název vlastnosti je název podřízeného prvku a hodnotu vlastnosti je textový prvek podřízený prvek.Příklad:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

definuje vlastnost s názvem TargetFrameworkVersion jim "v4.0" hodnota řetězce.

Sestavení kdykoli možné předefinovat vlastnosti.Pokud

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

Zobrazí se později v souboru projektu nebo v souboru importu později v souboru projektu pak trvá TargetFrameworkVersion novou hodnotu "v3.5".

Posouzení hodnoty vlastnosti

Hodnotu vlastnosti, použijte následující syntaxi kde PropertyName je název vlastnosti:

$(PropertyName)

Syntaxi přezkoumat některé vlastnosti v souboru projektu.

Zkoumat hodnoty vlastnosti

  1. Z editoru kódu nahraďte HelloWorld cíl tento kód:

    <Target Name="HelloWorld">
      <Message Text="Configuration is $(Configuration)" />
      <Message Text="MSBuildToolsPath is $(MSBuildToolsPath)" />
    </Target>
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup.Měli byste vidět tyto dva řádky (rozhraní.NET Framework verze se mohou lišit):

    Configuration is Debug
    MSBuildToolsPath is C:\Windows\Microsoft.NET\Framework\v4.0.20317
    

[!POZNÁMKA]

Pokud nechcete zobrazit tyto řádky pak jste pravděpodobně zapomněli uložit soubor projektu v editoru kódu.Uložte soubor a akci opakujte.

Dd393573.collapse_all(cs-cz,VS.110).gifPodmíněné vlastnosti

Mnoho vlastností, například konfigurace jsou podmíněně definovány, atribut podmínka se zobrazí v prvku vlastnosti.Podmíněné vlastnosti jsou definovány nebo předefinován pouze tehdy, pokud bude podmínka vyhodnocena jako "true".Všimněte si, že nedefinované vlastnosti jsou uvedeny výchozí hodnotu prázdný řetězec.Příklad:

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

"Pokud vlastnost konfigurace nebyla dosud definována, definovat a přiřaďte jí hodnotu"Ladění"" se rozumí.

Atribut podmínky mohou mít téměř všechny prvky MSBuild.Pro diskusi o použití atribut podmínka viz Nástroj MSBuild podmínky.

Dd393573.collapse_all(cs-cz,VS.110).gifRezervované vlastnosti

MSBuildvyhrazuje některé názvy vlastností k ukládání informací o souboru projektu a MSBuild binární soubory.MSBuildToolsPath je příkladem rezervované vlastnosti (nový nástroj MSBuild 3.5).Rezervované vlastnosti jsou odkazovány pomocí zápisu $ stejně jako jiné vlastnosti.Další informace naleznete v tématu Jak: odkaz na název nebo umístění souboru projektu a Nástroj MSBuild vyhrazena vlastnosti.

Dd393573.collapse_all(cs-cz,VS.110).gifProměnné prostředí

Proměnné prostředí v souborech projektu můžete odkazovat jako vlastnosti sestavení.Například pomocí proměnné prostředí PATH v souboru projektu, použijte $(cesta).Pokud projekt obsahuje definice vlastnosti, která má stejný název jako proměnná prostředí, vlastnost projektu přepíše hodnotu proměnné prostředí.Další informace naleznete v tématu Jak: použití proměnné prostředí v nové sestavení.

Nastavení vlastností z příkazového řádku

Vlastnosti mohou být definovány v příkazovém řádku pomocí /property nebo /p přepínač příkazového řádku.Hodnoty vlastností přijatých z příkazového řádku přepsat hodnoty vlastností v projektu proměnných souboru a prostředí.

Chcete-li nastavit hodnotu vlastnosti z příkazového řádku

  1. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld /p:Configuration=Release
    
  2. Prohlédněte si výstup.Tento řádek zobrazí:

    Configuration is Release.
    

MSBuild vytvoří vlastnost konfigurace a nastaví hodnotu "Vydání".

Speciální znaky

Některé znaky mají zvláštní význam v souborech projektu nástroje MSBuild.Příkladem tyto znaky středníkem (;) a hvězdičky.Tyto speciální znaky lze použít jako literály v souboru projektu, musí být určen pomocí syntaxe % xx, kde xx představuje hexadecimální hodnota znaku ASCII.

Změna úkolu zprávu zobrazit hodnotu vlastnosti konfigurace se speciálními znaky, aby byl čitelnější.

Použít speciální znaky ve zprávě úkol

  1. Z editoru kódu nahraďte oba úkoly zpráva tento řádek:

    <Message Text="%24(Configuration) is %22$(Configuration)%22" />
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup.Tento řádek zobrazí:

    $(Configuration) is "Debug"
    

Další informace naleznete v tématu Nástroj MSBuild speciální znaky.

Vytvoření položky

Položka je informace obvykle název souboru, který se používá jako vstup do systému sestavení.Například může být předána kolekce položek zdrojové soubory představující kompilace zkompilovat do sestavení s názvem úkolu.

Všechny položky jsou podřízené prvky ItemGroup prvky.Název položky je název podřízeného prvku a hodnota položky je hodnota atributu zahrnout podřízený prvek.Hodnoty položek se stejným názvem jsou shromážděny do typů položek tohoto názvu.Příklad:

<ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

definuje skupinu položek obsahující dvě položky.Kompilace typ položky má dvě hodnoty: "Program.cs" a "Properties\AssemblyInfo.cs".

Následující kód vytvoří stejný typ položky deklarováním oba soubory do jednoho atributu zahrnout odděleny středníkem.

<ItemGroup>
    <Compile Include="Program.cs;Properties\AssemblyInfo.cs" />
</ItemGroup>

Další informace naleznete v tématu Nástroj MSBuild položky.

[!POZNÁMKA]

Cesty k souboru jsou vzhledem ke složce obsahující soubor projektu nástroje MSBuild.

Posouzení hodnoty typu položky

Hodnoty typu položky, použijte následující syntaxi, kde typ položky je název typu položky:

@(ItemType)

Syntaxi zkoumat kompilace typ položky v souboru projektu.

Zkoumat hodnoty typu položky

  1. Z editoru kódu nahraďte cíl úkolu HelloWorld tento kód:

    <Target Name="HelloWorld">
      <Message Text="Compile item type contains @(Compile)" />
    </Target>
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup.Měla by se zobrazit tento dlouhý řádek:

    Compile item type contains Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
    

Hodnoty typu položky jsou odděleny středníky ve výchozím nastavení.

Chcete-li změnit oddělovač typu položky, použijte následující syntaxi, kde typ položky je typ položky a oddělovací řetězec jednoho nebo více znaků dělicí:

@(ItemType, Separator)

Změna úkolu zprávu a konce řádku kanály (% 0A % 0 D) kompilace zobrazení položek na jeden řádek.

Zobrazit položky Typ hodnoty na jeden řádek

  1. Z editoru kódu nahraďte tento řádek úkolu zprávu:

    <Message Text="Compile item type contains @(Compile, '%0A%0D')" />
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld

  4. Prohlédněte si výstup.Měli byste vidět tyto řádky:

    Compile item type contains Form1.cs
    Form1.Designer.cs
    Program.cs
    Properties\AssemblyInfo.cs
    Properties\Resources.Designer.cs
    Properties\Settings.Designer.cs
    

Dd393573.collapse_all(cs-cz,VS.110).gifZahrnout vyloučení a zástupné znaky

Můžete použít zástupné znaky "*", "**", a "?" s zahrnout atribut pro přidání položek do typu položky.Příklad:

<Photos Include="images\*.jpeg" />

Přidá všechny soubory s příponou "JPEG" ve složce obrázky typu položky fotografie, zatímco

<Photos Include="images\**.jpeg" />

Typ položky fotografie přidá všechny soubory s příponou "JPEG" ve složce obrázky a všechny její podsložky.Další příklady naleznete v tématu Jak: Vyberte soubory k sestavení.

Všimněte si, že deklarovanému položky jsou přidány do typu položky.Příklad:

<Photos Include="images\*.jpeg" />
<Photos Include="images\*.gif" />

Vytvoří typ položky s názvem fotografie obsahující všechny soubory ve složce bitové kopie s příponou "JPEG" nebo "GIF".To je ekvivalentní následující řádek:

<Photos Include="images\*.jpeg;images\*.gif" />

Vyloučit položku z typu položky s atributem vyloučit.Příklad:

<Compile Include="*.cs" Exclude="*Designer*">

Přidá všechny soubory s příponou".cs" kompilace položku zadejte kromě soubory, jejichž názvy obsahují řetězec "Designer".Další příklady naleznete v tématu Jak: vyloučení souborů ze sestavení.

Atribut vyloučit ovlivní pouze položky přidané pomocí atributu zahrnout položky prvku, který obsahuje oba.Příklad:

<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">

by vyloučení souboru Form1.cs, která byla přidána v předchozí položce prvek.

Zahrnout nebo vyloučit položky

  1. Z editoru kódu nahraďte tento řádek úkolu zprávu:

    <Message Text="Compile item type contains @(XFiles)" />
    
  2. Přidáte tuto položku skupiny hned za Import element:

    <ItemGroup>
       <XFiles Include="*.cs;properties/*.resx" Exclude="*Designer*" />
    </ItemGroup>
    
  3. Uložte soubor projektu.

  4. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  5. Prohlédněte si výstup.Tento řádek zobrazí:

    Compile item type contains Form1.cs;Program.cs;Properties/Resources.resx
    

Metadata položky

Položky mohou obsahovat kromě informací shromážděných z zahrnout a vyloučit atributy metadat.Úkoly, které vyžadují další informace o položkách než hodnotu položky slouží tato metadata.

Metadata položky je deklarován v souboru projektu vytvořením element s názvem metadata jako podřízený element položky.Položka může mít nula nebo více hodnoty metadat.Metadata kultury s hodnotou "Fr" má například následující položku CSFile:

<ItemGroup>
    <CSFile Include="main.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

Hodnoty metadat položky typu, použijte následující syntaxi, kde typ položky je název typu položky a MetaDataName je název metadat:

%(ItemType.MetaDataName)

Zkoumat metadata položky

  1. Z editoru kódu nahraďte tento řádek úkolu zprávu:

    <Message Text="Compile.DependentUpon: %(Compile.DependentUpon)" />
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup.Měli byste vidět tyto řádky:

    Compile.DependentUpon:
    Compile.DependentUpon: Form1.cs
    Compile.DependentUpon: Resources.resx
    Compile.DependentUpon: Settings.settings
    

Všimněte si, jak se několikrát zobrazí slovní spojení "Compile.DependentUpon".Používání metadat pomocí této syntaxe v rámci cíle způsobí "dávkování".Dávkování znamená jednou provádějí úkoly v rámci cíle pro každou hodnotu jedinečná metadata.Tento skript ekvivalent MSBuild společného "pro smyčka" programování konstrukce.Další informace naleznete v tématu Nástroj MSBuild dávkování.

Dd393573.collapse_all(cs-cz,VS.110).gifZnámé metadat

Vždy, když je položka přidána do seznamu položky, položky některé známé metadata přiřazena.Například %(Filename) vrátí název souboru položky.Úplný seznam známých metadat naleznete v Nástroj MSBuild známých Metadata položky.

Pro přezkoumání metadat známých

  1. Z editoru kódu nahraďte tento řádek úkolu zprávu:

    <Message Text="Compile Filename: %(Compile.Filename)" />
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup.Měli byste vidět tyto řádky:

    Compile Filename: Form1
    Compile Filename: Form1.Designer
    Compile Filename: Program
    Compile Filename: AssemblyInfo
    Compile Filename: Resources.Designer
    Compile Filename: Settings.Designer
    

Porovnáním dvou příkladech uvidíte, že ne každá položka v kompilace typ položky má DependentUpon metadat, všechny položky mají známý název souboru metadat.

Dd393573.collapse_all(cs-cz,VS.110).gifTransformace metadat

Seznamy položek lze transformovat do nové položky seznamů.Transformace seznam položek, použijte následující syntaxi, kde typ položky je název typu položky a MetadataName je název metadat:

@(ItemType -> '%(MetadataName)')

Například můžete seznam položek zdrojových souborů transformovány do kolekce souborů objekt pomocí výrazu jako @(SourceFiles -> '%(Filename).obj').Další informace naleznete v tématu Nástroj MSBuild transformace.

Transformace položek pomocí metadat

  1. Z editoru kódu nahraďte tento řádek úkolu zprávu:

    <Message Text="Backup files: @(Compile->'%(filename).bak')" />
    
  2. Uložte soubor projektu.

  3. Z Okno příkaz, zadejte a spusťte tento řádek:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Prohlédněte si výstup.Tento řádek zobrazí:

    Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak
    

Všimněte si, že metadata vyjádřená v této syntaxe nezpůsobí dávkování.

Co následuje?

Zjistěte, jak vytvořit jednoduchý projekt krok jeden soubor najednou, vyzkoušejte Názorný postup: Vytvoření souboru MSBuild projektu od začátku.

Viz také

Další zdroje

MSBuild

Nástroj MSBuild odkaz