When – element (MSBuild)
Určuje možný blok kódu, který Choose
má prvek vybrat.
<Project>Choose When><Choose>>< ... <<Jinak><zvolte> ...
Syntaxe
<When Condition="'StringA'=='StringB'">
<PropertyGroup>... </PropertyGroup>
<ItemGroup>... </ItemGroup>
<Choose>... </Choose>
</When>
Atributy a prvky
Následující části popisují atributy, podřízené prvky a nadřazené prvky.
Atributy
Atribut | Popis |
---|---|
Podmínka | Požadovaný atribut. Podmínka, která se má vyhodnotit Další informace naleznete v tématu Podmínky. |
Podřízené prvky
Element (Prvek) | Popis |
---|---|
Zvolit | Volitelný element. Vyhodnotí podřízené prvky a vybere jednu část kódu, která se má provést. Prvek může obsahovat nula nebo více Choose prvků When . |
ItemGroup | Volitelný element. Obsahuje sadu uživatelem definovaných elementů Položky . Prvek může obsahovat nula nebo více ItemGroup prvků When . |
Propertygroup | Volitelný element. Obsahuje sadu uživatelem definovaných elementů vlastnosti . Prvek může obsahovat nula nebo více PropertyGroup prvků When . |
Nadřazené prvky
Element (Prvek) | Popis |
---|---|
Choose – element (MSBuild) | Vyhodnotí podřízené prvky a vybere jednu část kódu, která se má provést. |
Poznámky
Pokud se Condition
atribut vyhodnotí jako true, ItemGroup
podřízený prvek a PropertyGroup
prvky elementu When
se spustí a všechny následné When
prvky se přeskočí.
Společně jsou Choose
použity , When
a Otherwise
elementy poskytnout způsob, jak vybrat jeden oddíl kódu provést z řady možných alternativ. Další informace naleznete v tématu Podmíněné konstrukce.
Příklad
Následující projekt používá Choose
prvek k výběru sady hodnot vlastností v elementech When
, které chcete nastavit. Pokud jsou Condition
atributy obou When
prvků vyhodnoceny jako false
, hodnoty vlastností v elementu Otherwise
jsou nastaveny. Při spuštění příkladu zkuste předat různá nastavení vlastností z příkazového řádku, například msbuild myproj.proj -p:Configuration=Test;Platform=x86
, a podívejte se, jak vypadá výstupní cesta. Předpokládejme, že požadavek je nastavit určité vlastnosti pro sestavení ladění a vydávání verzí, včetně výstupní složky založené na bitové verzi platformy, nikoli na skutečném názvu platformy, a také podporovat konfigurace Test a Retail, ale považovat za "Retail" jako "Release".
<Project>
<PropertyGroup>
<Configuration Condition="$(Configuration) == ''">Debug</Configuration>
<Platform Condition="$(Platform) == ''">x64</Platform>
</PropertyGroup>
<Choose>
<When Condition="$(Configuration)=='Test'">
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
<PropertyGroup>
<OutputPath>.\bin\Test\32-bit\</OutputPath>
</PropertyGroup>
</When>
<When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
<PropertyGroup>
<OutputPath>.\bin\Test\64-bit\</OutputPath>
</PropertyGroup>
</When>
<!-- For any other platform, use the platform name -->
<Otherwise>
<PropertyGroup>
<OutputPath>.\bin\Test\$(Platform)\</OutputPath>
</PropertyGroup>
</Otherwise>
</Choose>
</When>
<When Condition="$(Configuration)=='Retail' Or $(Configuration)=='Release'">
<PropertyGroup>
<DebugSymbols>false</DebugSymbols>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
<PropertyGroup>
<OutputPath>.\bin\Release\32-bit\</OutputPath>
</PropertyGroup>
</When>
<When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
<PropertyGroup>
<OutputPath>.\bin\Release\64-bit\</OutputPath>
</PropertyGroup>
</When>
<!-- For any other platform, use the platform name -->
<Otherwise>
<PropertyGroup>
<OutputPath>.\bin\Release\$(Platform)\</OutputPath>
</PropertyGroup>
</Otherwise>
</Choose>
</When>
<!-- For any other configuration, use debug properties-->
<Otherwise>
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition="$(Platform)=='x86' Or $(Platform)=='ARM32'">
<PropertyGroup>
<OutputPath>.\bin\$(Configuration)\32-bit\</OutputPath>
</PropertyGroup>
</When>
<When Condition="$(Platform)=='x64' Or $(Platform)=='ARM64'">
<PropertyGroup>
<OutputPath>.\bin\$(Configuration)\64-bit\</OutputPath>
</PropertyGroup>
</When>
</Choose>
</Otherwise>
</Choose>
<Target Name="ShowProperties">
<Message Text="DebugSymbols: $(DebugSymbols)"/>
<Message Text="Optimize: $(Optimize)"/>
<Message Text="DefineConstants: $(DefineConstants)"/>
<Message Text="OutputPath: $(OutputPath)"/>
</Target>
</Project>