Elemento Choose (MSBuild)

Evalúa los elementos secundarios para seleccionar un conjunto de elementos ItemGroup o PropertyGroup para evaluar.

<Proyecto><Choose><When><Choose> ... <Otherwise><Choose> ...

El elemento Choose contiene una serie de elementos When con atributos Condition que se prueban en orden de arriba abajo, hasta que uno se evalúe como true. Si más de un elemento When se evalúa como true, se usará solo el primero. Se evaluará un elemento Otherwise, de haberlo, si ninguna condición de un elemento When se evalúa como true.

Sintaxis

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

Atributos y elementos

En las siguientes secciones 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 un elemento Otherwise o ninguno 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 uno 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.

Observaciones

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.

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 propiedad del elemento Otherwise.

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

Consulte también