Elemento When (MSBuild)When element (MSBuild)

Especifica un posible bloque de código que el elemento Choose puede seleccionar.Specifies a possible block of code for the Choose element to select.

<Project> <Choose> <When> <Choose> ... <Otherwise> <Choose> ...<Project> <Choose> <When> <Choose> ... <Otherwise> <Choose> ...

SintaxisSyntax

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

Atributos y elementosAttributes and elements

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.The following sections describe attributes, child elements, and parent elements.

AtributosAttributes

AtributoAttribute DescripciónDescription
CondiciónCondition Atributo necesario.Required attribute.

Condición que se va a evaluar.Condition to evaluate. Para obtener más información, consulte Condiciones.For more information, see Conditions.

Elementos secundariosChild elements

ElementoElement DescripciónDescription
ChooseChoose Elemento opcional.Optional element.

Evalúa los elementos secundarios para seleccionar una sección de código y ejecutarla.Evaluates child elements to select one section of code to execute. Puede haber cero o más elementos Choose en un elemento When.There may be zero or more Choose elements in a When element.
ItemGroupItemGroup Elemento opcional.Optional element.

Contiene un conjunto de elementos Item definidos por el usuario.Contains a set of user-defined Item elements. Puede haber cero o más elementos ItemGroup en un elemento When.There may be zero or more ItemGroup elements in a When element.
PropertyGroupPropertyGroup Elemento opcional.Optional element.

Contiene un conjunto de elementos Property definidos por el usuario.Contains a set of user-defined Property elements. Puede haber cero o más elementos PropertyGroup en un elemento When.There may be zero or more PropertyGroup elements in an When element.

Elementos primariosParent elements

ElementoElement DescripciónDescription
Elemento Choose (MSBuild)Choose element (MSBuild) Evalúa los elementos secundarios para seleccionar una sección de código y ejecutarla.Evaluates child elements to select one section of code to execute.

ComentariosRemarks

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.If the Condition attribute evaluates to true, the child ItemGroup and PropertyGroup elements of the When element are executed and all subsequent When elements are skipped.

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.The Choose, When, and Otherwise elements are used together to provide a way to select one section of code to execute out of a number of possible alternatives. Para más información, consulte la sección Construcciones condicionales.For more information, see Conditional constructs.

EjemploExample

En el proyecto siguiente se utiliza el elemento Choose para seleccionar el conjunto de valores de propiedad de los elementos When que desea establecer.The following project uses the Choose element to select which set of property values in the When elements to set. Si los atributos Condition de ambos elementos When se evalúan como false, se establecen los valores de propiedad del elemento Otherwise.If the Condition attributes of both When elements evaluate to false, the property values in the Otherwise element are set.

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

Vea tambiénSee also