Construcciones condicionales de MSBuild
MSBuild proporciona un mecanismo para cualquier procesamiento con los elementos Choose, When y Otherwise.
Usar el elemento 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
, en caso de estar presente, si ninguna condición de un elemento When
se evalúa como true
.
Los elementos Choose
se pueden usar como elementos secundarios de los elementos Project
, When
y Otherwise
. Los elementos When
y Otherwise
pueden tener elementos secundarios ItemGroup
, PropertyGroup
o Choose
.
Ejemplo
En el ejemplo siguiente se usan los elementos Choose
y When
para cualquier procesamiento. Las propiedades y los elementos del proyecto se establecen en función dl valor de la propiedad Configuration
.
<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>
</Choose>
<!-- Rest of Project -->
</Project>
En este ejemplo, se utiliza una condición en una constante del compilador DEFINED_CONSTANT
. Éstas se incluyen en la propiedad DefinedConstants
. La expresión regular se usa para hacer coincidir la constante exacta en una lista separada por punto y coma.
<Choose>
<When Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(
$(DefineConstants), '^(.*;)*DEFINED_CONSTANT(;.*)*$'))">
<!-- When DEFINED_CONSTANT is defined. -->
</When>
<!-- other conditions -->
</Choose>
Vea también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de