1/9/2010 12:51 El Bruno

[MSBUILD] Condiciones en MSBuild (VIII)

image47dd1de4

Buenas,

las condiciones en MSBuild se aplican a casi todos los elementos y tareas que están disponibles para utilizar a través del atributo @Condition. En esta entrada de MSDN: MSBuild Conditions, se explican todos los tipos de condiciones soportados, pero viene bien mostrar un par de ejemplos.

El siguiente proyecto, define una propiedad $(Nino) (línea 4) y luego ejecuta una tarea para mostrar un mensaje, dependiendo de una condición donde se evalua si el valor de la propiedad es igual a [Valentino] (línea 8):

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
   2:   <!-- Grupo de Propriedades -->
   3:   <PropertyGroup>
   4:     <Nino>Valentino</Nino>
   5:   </PropertyGroup>
   6:   <Target Name="Target1">
   7:     <Message Text="'$ (Nino)'=='Valentino'"
   8:              Condition="'$(Nino)'=='Valentino'" />
   9:   </Target>
  10: </Project>

 

El resultado del proyecto es el siguiente:

image

 

Si en cambio definimos una condición que no se cumpla

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
   2:   <!-- Grupo de Propriedades -->
   3:   <PropertyGroup>
   4:     <Nino>Valentino</Nino>
   5:   </PropertyGroup>
   6:   <Target Name="Target1">
   7:     <Message Text="'$ (Nino)'=='Bruno'"
   8:              Condition="'$(Nino)'=='Bruno'" />
   9:   </Target>
  10: </Project>

En el resultado no veremos el mensaje.

Otra opción es trabajar con condiciones complejas, ya que podemos utilizar los operadores clásicos AND y OR para estas situaciones:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
   2:   <!-- Grupo de Propriedades -->
   3:   <PropertyGroup>
   4:     <Nino>Valentino</Nino>
   5:     <Nina>Martina</Nina>
   6:   </PropertyGroup>
   7:   <Target Name="Target1">
   8:     <Message Text="Condicion Simple"
   9:              Condition="'$(Nino)'=='Valentino'" />
  10:     <Message Text="Condicion Simple Inválida"
  11:              Condition="'$(Nino)'!='Valentino'" />
  12:     <Message Text="Condicion Compuesta"
  13:              Condition="'$(Nino)'=='Valentino' AND '$(Nina)'!='Valentino'" />
  14:   </Target>
  15: </Project>

 

En donde podremos ver que se muestran solo el primer y tercer mensaje:

image

 

Y si en lugar de tareas de mensajes, aplicamos condiciones a llamadas a Targets, con la tarea CallTarget

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
   2:   <!-- Grupo de Propriedades -->
   3:   <PropertyGroup>
   4:     <Nino>Valentino</Nino>
   5:     <Nina>Martina</Nina>
   6:   </PropertyGroup>
   7:   <Target Name="Target1">
   8:     <CallTarget Targets="Target2"
   9:              Condition="'$(Nino)'=='Valentino'" />
  10:     <CallTarget Targets="Target3"
  11:              Condition="'$(Nino)'!='Valentino'" />
  12:     <CallTarget Targets="Target4"
  13:              Condition="'$(Nino)'=='Valentino' AND '$(Nina)'!='Valentino'" />
  14:   </Target>
  15:   <Target Name="Target2">
  16:     <Message Text="Target 2" />
  17:   </Target>
  18:   <Target Name="Target3">
  19:     <Message Text="Target 3" />
  20:   </Target>
  21:   <Target Name="Target4">
  22:     <Message Text="Target 4" />
  23:   </Target>
  24: </Project>

pues el resultado es el mismo:

image

 

Saludos @ Here

El Bruno (@elbruno en Twitter)

Archivado en: ,,,,
Comparte este post:

# [MSBUILD] Recopilación de posts para comenzar a conocer MSBuild

Wednesday, September 15, 2010 3:45 PM by El Bruno

Buenas, después de casi un mes de escribir un poco de MSBuild , a continuación el listado de los posts

# [MSBUILD] Recopilaci&#243;n de posts para comenzar a conocer MSBuild

Wednesday, September 15, 2010 3:45 PM by El Bruno

Buenas, después de casi un mes de escribir un poco de MSBuild , a continuación el listado de los posts

# [MSBUILD] Recopilatorio de enlaces para comenzar a conocer MSBuild (II)

Thursday, October 28, 2010 8:40 AM by El Bruno

Buenas, actualización de la lista de enlaces para dar los primeros pasos con MSBuild . Cómo empezar

# [#MSBUILD] Recopilatorio de enlaces para comenzar a conocer MSBuild (III)

Tuesday, September 27, 2011 9:09 PM by El Bruno

Buenas, actualización de la lista de enlaces para dar los primeros pasos con MSBuild . Cómo