2/9/2010 10:26
El Bruno
[MSBUILD] Case/Switch en MSBuild (IX)

Buenas,
ayer fue el turno de las condiciones, asi que es natural que el siguiente post esté relacionado con los CASE/Switch o MSBuild Conditional Constructs, como se definen en MSDN. Este elemento nos permite armar sentencias de selección utilizando:
Como lo mejor es leer un poco de código para comprenderlo, vamos con un proyecto de ejemplo. El siguiente proyecto define una propiedad $(Nino) (línea 3 a 5), que luego es utilizada dentro de un bloque <Choose> para actuar en consecuencia del valor de la misma. Utilizando un evaluador <When> (líneas 7 a 11), se compara el valor de la propiedad y además para el caso de que no coincida, se utiliza además la sentencia <Otherwise> (líneas 12 a 16).
En ambos casos se define un valor para la propiedad $(Msg) que luego se muestra en el MSBuild Target inicial del proyecto.
1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
2: InitialsTargets="Target1">
3: <PropertyGroup>
4: <Nino>Martina</Nino>
5: </PropertyGroup>
6: <Choose>
7: <When Condition="'$(Nino)'=='Valentino'">
8: <PropertyGroup>
9: <Msg>Nino == Valentino</Msg>
10: </PropertyGroup>
11: </When>
12: <Otherwise>
13: <PropertyGroup>
14: <Msg>OtherWise -> Nino != Valentino</Msg>
15: </PropertyGroup>
16: </Otherwise>
17: </Choose>
18: <Target Name="Target1">
19: <Message Text="$(Msg)"/>
20: </Target>
21: </Project>
El resultado es el siguiente:
Si defino otro valor para la propiedad $(Nino), por ejemplo por línea de comandos
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>msbuild "C:\srcBruno\Agile01\MsBuild Tests\Case_1.targets" /property:Nino=Valentino
El resultado es el siguiente:
Saludos @ Here
El Bruno (@elbruno en Twitter)
Archivado en: Visual Studio 2010,Build,Code Sample,Tutorial,MSBuild
Comparte este post: