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>

Confira também