Postupy: Sestavení stejných zdrojových souborů s různými možnostmi
Při vytváření projektů často kompilace stejné komponenty s možností různých sestavení.Například můžete vytvořit sestavení ladící informace symbol nebo vydané žádné informace o symbolu, ale s povolenou funkcí optimalizace.Nebo můžete vytvořit projekt na konkrétní platformu, jako je například x 86 nebo x64.V těchto případech většinu možností sestavení zůstanou stejné. pouze několik možností jsou změněny na konfiguraci sestavení ovládacího prvku.S MSBuild, vytvořit konfigurace různých sestavení pomocí vlastnosti a podmínky.
Pomocí vlastnosti upravit projekty
Property Element definuje proměnné, které je odkazováno v souboru projektu, jako je například umístění dočasného adresáře nebo nastavit hodnoty vlastností, které se používají v několika konfigurací jako ladicí sestavení a k uvolnění sestavení.Další informace o vlastnostech naleznete v Vlastnosti nástroje MSBuild.
Vlastnosti můžete změnit konfiguraci vašeho sestavení bez nutnosti změny souboru projektu.Condition Atribut Property element a PropertyGroup prvek umožňuje změnit hodnotu vlastnosti.Další informace o MSBuild podmínky, viz Podmínky nástroje MSBuild.
Nastavit skupiny vlastností na základě jiné vlastnosti
Použití Condition atribut PropertyGroup prvek podobný následujícímu:
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Definovat vlastnost na základě jiné vlastnosti
Použití Condition atribut Property prvek podobný následujícímu:
<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
Určení vlastností v příkazovém řádku
Jakmile přijmete více konfigurací je zapsán soubor projektu, musíte mít možnost změny konfigurace, při sestavení projektu.MSBuildTato možnost poskytuje povolením vlastnosti zadané na příkazovém řádku pomocí /property nebo /p přepnout.
Nastavit vlastnosti projektu v příkazovém řádku
Použití /property přepínač vlastnosti a hodnoty vlastností.Příklad:
msbuild file.proj /property:Flavor=Debug
-nebo-
Msbuild file.proj /p:Flavor=Debug
Určit více než jednu vlastnost projektu na příkazovém řádku
Použít /property nebo /p přepínač několikrát vlastnosti a hodnoty vlastností nebo použít jednu /property nebo /p přepněte a více vlastností oddělte středníky (;).Příklad:
msbuild file.proj /p:Flavor=Debug;Platform=x86
- nebo -
msbuild file.proj /p:Flavor=Debug /p:Platform=x86
Proměnné prostředí jsou také považovány za vlastnosti a jsou automaticky zahrnuta v MSBuild.Další informace o použití proměnných prostředí naleznete v Postupy: Použití proměnných prostředí v sestavení.
Hodnota vlastnosti zadané na příkazovém řádku mají přednost před libovolnou hodnotu, která je nastavena pro stejnou vlastnost v souboru projektu a hodnota v souboru projektu má přednost před hodnotou v proměnné prostředí.
Toto chování můžete změnit pomocí TreatAsLocalProperty atributu značky projektu.Pro názvy vlastností, které jsou uvedeny tímto atributem hodnota vlastnosti zadané na příkazovém řádku nemá přednost hodnota v souboru projektu.Příklad najdete dále v tomto tématu.
Příklad
Následující příklad kódu projektu "Hello World" obsahuje dvě nové skupiny vlastností, které lze použít k vytvoření sestavení ladění a verzi sestavení.
Sestavení ladicí verze tohoto projektu, zadejte:
msbuild consolehwcs1.proj /p:flavor=debug
Sestavení prodejní verze tohoto projektu, zadejte:
msbuild consolehwcs1.proj /p:flavor=retail
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<!-- Sets the default flavor of an environment variable called
Flavor is not set or specified on the command line -->
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
</PropertyGroup>
<!-- Define the DEBUG settings -->
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
<DebugType>full</DebugType>
<Optimize>no</Optimize>
</PropertyGroup>
<!-- Define the RETAIL settings -->
<PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
<DebugType>pdbonly</DebugType>
<Optimize>yes</Optimize>
</PropertyGroup>
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files
of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="$(DebugType)"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe" >
<!-- Set the OutputAssembly attribute of the CSC
task to the name of the executable file that is
created -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Následující příklad ukazuje způsob použití TreatAsLocalProperty atribut.Color Vlastnost má hodnotu Blue v souboru projektu a Green v příkazovém řádku.S TreatAsLocalProperty="Color" do projektu tagu vlastnost příkazového řádku (Green) nelze přepsat vlastnost, která je definována v souboru projektu (Blue).
Sestavení projektu, zadejte následující příkaz:
msbuild colortest.proj /t:go /property:Color=Green
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" TreatAsLocalProperty="Color">
<PropertyGroup>
<Color>Blue</Color>
</PropertyGroup>
<Target Name="go">
<Message Text="Color: $(Color)" />
</Target>
</Project>
<!--
Output with TreatAsLocalProperty="Color" in project tag:
Color: Blue
Output without TreatAsLocalProperty="Color" in project tag:
Color: Green
-->