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>