22/8/2010 23:56 El Bruno

[MSBUILD] Utilizando Targets en proyectos de Build (IV)

image47dd1de4

Buenas,

en el mini post de hoy, veremos uno de los componentes más importantes de MSBuild: los MSBuild Targets. Los mismos permiten definir bloques o secciones de acciones de manera que sea posible organizar la ejecución de un proyecto de compilación de una forma más ordenada. Haciendo una analogía con la programación que conocemos, un MSBuild Target, es algo similar a una función.

Un ejemplo simple de un proyecto donde se utilicen MSbuild Targets es el siguiente:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   2:   <Target Name="Target1">
   3:     <Message Text="Target 1" />
   4:   </Target>
   5:   <Target Name="Target2">
   6:     <Message Text="Target 2" />
   7:   </Target>
   8: </Project>

Donde podemos ver que el archivo de proyecto, posee 2 elementos <Target> definidos (líneas 2 y 5) y dentro de los mismos, se utiliza la tarea <Message> para mostrar información.  Si ejecutamos el archivo de proyecto, veremos que se toma el primer MSBuild Target (línea 2), como el predefinido y se ejecuta el mismo:

image

Si necesitamos definir uno o más targets por defecto, para nuestro proyecto, es posible hacerlo utilizando el atributo @DefaultTargets en el elemento <Project>.

En el siguiente ejemplo, definimos como target por defecto el Target2:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
   2:          DefaultTargets="Target2">
   3:   <Target Name="Target1">
   4:     <Message Text="Target 1" />
   5:   </Target>
   6:   <Target Name="Target2">
   7:     <Message Text="Target 2" />
   8:   </Target>
   9: </Project>

La ejecución del proyecto, nos muestra como en este caso se muestra el mensaje definido en el Target2 (línea 7):

image

 

 

 

 

Si necesitamos definir más de un target por defecto para nuestro proyecto, lo podemos realizar del mismo modo.

El siguiente proyecto de ejemplo muestra un caso, donde los DefaultTargets son Target1 y Target3:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
   2:          DefaultTargets="Target1;Target3">
   3:   <Target Name="Target1">
   4:     <Message Text="Target 1" />
   5:   </Target>
   6:   <Target Name="Target2">
   7:     <Message Text="Target 2" />
   8:   </Target>
   9:   <Target Name="Target3">
  10:     <Message Text="Target 3" />
  11:   </Target>
  12: </Project>

La ejecución de este proyecto muestra los mensajes correspondientes a cada <Target> (líneas 4 y 10).

image

Si bien es posible utilizar el atributo @DefaultTargets para indicar los MSBuild Targets que queremos ejecutar, también existen otras opciones:

  • Utilizar el atributo @InitialTargets para indicar los targets a ejecutar en el elemento <Project>.
  • Utilizar el comando /target en la llamada a la compilación del proyecto para definir el target a ejecutar.

El en 2do ejemplo volvemos al primer ejemplo de ejecución, donde no hemos definido un target por defecto, ni un target inicial:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   2:   <Target Name="Target1">
   3:     <Message Text="Target 1" />
   4:   </Target>
   5:   <Target Name="Target2">
   6:     <Message Text="Target 2" />
   7:   </Target>
   8: </Project>

 

Y en la compilación por línea de comandos indicamos la ejecución del Target2 como el punto de entrada del proyecto de Build, con el switch /target:Target2.

image

Pues bien, como siempre más información en MSDN http://msdn.microsoft.com/en-us/library/ee216359.aspx.

 

Saludos @ Home

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)

Wednesday, September 28, 2011 8:34 PM by El Bruno

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