Compartilhar via


Elemento When (MSBuild)

Especifica um bloco possível de código para o elemento de Choose selecione.

<When Condition="'StringA'=='StringB'">
    <PropertyGroup>... </PropertyGroup>
    <ItemGroup>... </ItemGroup>
    <Choose>... </Choose>
</When>

Atributos e elementos

As seções a seguir descrevem elementos filho, atributos, e elementos pai.

Atributos

Atributo

Descrição

Condição

Atributo necessário.

condicione para avaliar. Para obter mais informações, consulte Condições do MSBuild.

Elementos filho

Elemento

Descrição

Choose

elemento opcional.

Avalia os elementos filho para selecionar uma seção de código para executar. pode haver zero ou mais elementos de Choose em um elemento de When .

ItemGroup

elemento opcional.

Contém um conjunto de elementos definidos pelo usuário de item . pode haver zero ou mais elementos de ItemGroup em um elemento de When .

PropertyGroup

elemento opcional.

Contém um conjunto de elementos definidos pelo usuário de Propriedade . pode haver zero ou mais elementos de PropertyGroup em um elemento de When .

Elementos pai

Elemento

Descrição

Elemento Choose (MSBuild)

Avalia os elementos filho para selecionar uma seção de código para executar.

Comentários

Se o atributo de Condition avalia como true ItemGroup , e os elementos filhos de PropertyGroup do elemento de When são executados e todos os elementos subseqüentes de When são ignorados.

Choose, When, e os elementos de Otherwise são usados em conjunto para fornecer uma maneira para selecionar uma seção de código para executar fora de um número de alternativas possíveis. Para obter mais informações, consulte Constructos condicionais do MSBuild.

Exemplo

O exemplo a seguir usa o projeto elemento de Choose para selecionar que define os valores de propriedades nos elementos de When para definir. Se os atributos de Condition de ambos os elementos de When avaliada como false, os valores de propriedade no elemento de Otherwise são definidos.

<Project
    xmlns="https://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>

Consulte também

Referência

Constructos condicionais do MSBuild

Conceitos

Referência do esquema de arquivos de projeto do MSBuild