Construcciones condicionales de MSBuild
MSBuild proporciona un mecanismo para un posible procesamiento con los elementos Choose, When y Otherwise.
Utilización del elemento Choose
El elemento Choose contiene una serie de elementos When con atributos Condition que se comprueban de forma ordenada de arriba abajo hasta que uno aparece evaluado como true. Si más de un elemento When resulta evaluado como true, sólo se utilizará el primero. Se evaluará un elemento Otherwise, en caso de encontrarse presente, si ninguna condición en un elemento When resulta evaluada como true.
Los elementos Choose se pueden utilizar como elementos secundarios de elementos Project, When y Otherwise. Los elementos When y Otherwise pueden tener elementos secundarios ItemGroup, PropertyGroup o Choose.
Ejemplo
En el ejemplo siguiente se utilizan los elementos Choose y When para cualquier posible procesamiento. Las propiedades y los elementos para el proyecto se establecen dependiendo del valor de la propiedad Configuration.
<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>
</Choose>
<!-- Rest of Project -->
</Project>