Compartir a través de


Elemento Choose (MSBuild)

Evalúa los elementos secundarios para seleccionar un conjunto de elementos ItemGroup y/o los elementos PropertyGroup que se evaluarán.

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

Atributos y elementos

En las secciones siguientes se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Ninguno.

Elementos secundarios

Elemento

Descripción

Otherwise

Elemento opcional.

Especifica el bloque de código PropertyGroup y los elementos ItemGroup que se evaluarán si las condiciones de todos los elementos When se evalúan como false. Puede haber cero o un elemento Otherwise en un elemento Choose y debe ser el último elemento.

When

Elemento necesario.

Especifica un posible bloque de código que el elemento Choose puede seleccionar. Puede haber cero o más elementos When en un elemento Choose.

Elementos primarios

Elemento

Descripción

Otherwise

Especifica el bloque de código que se ejecutará si las condiciones de todos los elementos When se evalúan como false.

Proyecto

Elemento raíz necesario de un archivo de proyecto de MSBuild.

When

Especifica un posible bloque de código que el elemento Choose puede seleccionar.

Comentarios

Los elementos Choose, When, y Otherwise se utilizan juntos para ofrecer un modo de seleccionar una sección de código para que ejecute una serie de alternativas posibles. Para obtener más información, vea Construcciones condicionales de MSBuild.

Ejemplo

En el proyecto siguiente se utiliza el elemento Choose para seleccionar el conjunto de valores de propiedad de los elementos When que desea establecer. Si los atributos Condition de ambos elementos When se evalúan como false, se establecen los valores de la propiedad del elemento Otherwise.

<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>

Vea también

Referencia

Construcciones condicionales de MSBuild

Conceptos

Referencia de esquemas del archivo de proyecto MSBuild