Elemento When (MSBuild)

Actualización: noviembre 2007

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

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

Atributos y elementos

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

Atributos

Atributo

Descripción

Condition

Atributo necesario.

Condición que se va a evaluar. Para obtener más información, vea Condiciones de MSBuild.

Elementos secundarios

Elemento

Descripción

Elija

Elemento opcional.

Evalúa los elementos secundarios para seleccionar una sección de código y ejecutarla. Puede haber cero o más elementos Choose en un elemento When.

ItemGroup

Elemento opcional.

Contiene un conjunto de elementos Item definidos por el usuario. Puede haber cero o más elementos ItemGroup en un elemento When.

PropertyGroup

Elemento opcional.

Contiene un conjunto de elementos Property definidos por el usuario. Puede haber cero o más elementos PropertyGroup en un elemento When.

Elementos primarios

Elemento

Descripción

Elemento Choose (MSBuild)

Evalúa los elementos secundarios para seleccionar una sección de código y ejecutarla.

Comentarios

Si el atributo Condition se evalúa en true, los elementos secundarios ItemGroup y PropertyGroup del elemento When se ejecutarán y todos los elementos subsiguientes When se omitirán.

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

Conceptos

Referencia de esquemas del archivo de proyecto MSBuild

Referencia

Construcciones condicionales de MSBuild