Elemento Choose (MSBuild)
Avalia a elementos filho para selecionar um conjunto de elementos ItemGroup
e/ou PropertyGroup
a ser avaliado.
<Projeto><Choose><When><Choose> ... <Otherwise><Choose> ...
O elemento Choose
contém uma série de elementos de When
com atributos Condition
que são testados na ordem de cima para baixo até que um seja avaliado como true. Se mais de um elemento When
for avaliado como true, somente o primeiro será usado. Um elemento Otherwise
, se presente, será avaliado se nenhuma condição em um elemento When
for avaliada como true.
Syntax
<Choose>
<When Condition="'StringA'=='StringB'">... </When>
<Otherwise>... </Otherwise>
</Choose>
Atributos e elementos
As seções a seguir descrevem atributos, elementos filho e elementos pai.
Atributos
Nenhum.
Elementos filho
Elemento | Descrição |
---|---|
Otherwise | Elemento opcional. Especifica o bloco de código PropertyGroup e os elementos ItemGroup para avaliar se as condições de todos os elementos When correspondem a false . Pode haver um zero ou um elemento Otherwise em um elemento Choose , e ele deve ser o último elemento. |
Quando | Elemento necessário. Especifica um possível bloco de códigos para o elemento Choose selecionar. Pode haver um ou mais elementos When em um elemento Choose . |
Elementos pai
Elemento | Descrição |
---|---|
Otherwise | Especifica o bloco de código a ser executado se as condições de todos os elementos When forem avaliadas como false . |
Projeto | Elemento raiz necessário de um arquivo de projeto do MSBuild. |
Quando | Especifica um possível bloco de códigos para o elemento Choose selecionar. |
Comentários
Os elementos Choose
, When
e Otherwise
são usados juntos para fornecer uma maneira de selecionar uma seção de código para executar entre diversas possíveis alternativas. Para obter mais informações, confira Constructos condicionais.
Exemplo
O seguinte projeto usa o Choose
elemento para selecionar o conjunto de valores de propriedades no elemento When
a ser definido. Se os Condition
atributos de ambos When
elementos são avaliadas como false
, os valores de propriedades no elemento Otherwise
são definidos.
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
<OutputType>Exe</OutputType>
<RootNamespace>ConsoleApplication1</RootNamespace>
<AssemblyName>ConsoleApplication1</AssemblyName>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<Choose>
<When Condition=" '$(Configuration)'=='debug' ">
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>.\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Compile Include="UnitTesting\*.cs" />
<Reference Include="NUnit.dll" />
</ItemGroup>
</When>
<When Condition=" '$(Configuration)'=='retail' ">
<PropertyGroup>
<DebugSymbols>false</DebugSymbols>
<Optimize>true</Optimize>
<OutputPath>.\bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<Optimize>false</Optimize>
<OutputPath>.\bin\$(Configuration)\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
</Otherwise>
</Choose>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>