6/9/2010 11:33 El Bruno

[MSBUILD] Tareas autocontenidas/Inline Tasks en MSBuild 4.0 (XI)

image47dd1de4

Buenas,

una de las novedades más interesantes y más peligrosas que se incorporan en MSBuild 4.0, es la capacidad de trabajar con tareas autocontenidas (Inline Tasks). El listado completo de novedades se puede encontrar aquí, pero lo mejor de esta novedad es que para tareas simples, ya no será necesario crear un ensamblado .Net que implemente la interfaz ITask, e integrar el mismo en el proceso de Build. Para definir una Inline Task, se utiliza el elemento UsingTask, y dentro del mismo, se define la implementación de la tarea.

El siguiente proyecto, muestra un ejemplo de una tarea autocontenida. Dentro del mismo:

  • El proyecto especifica explícitamente que la versión es 4.0 (línea 2)
  • Trabajo con un único MSBuild Target inicial donde se invoca a una tarea llamada DisplayTinos (línea 5)
  • La definición de la tarea DisplayTino se realiza entre las líneas 7 y 22, utilizando UsingTask.
  • En la línea 8 se define el nombre de la tarea
  • La definición de la tarea, incluyendo el lenguaje, los usings, y el código de la misma; se realiza entre las líneas 12 y 21
   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 
   2:          ToolsVersion="4.0" 
   3:          InitialTargets="Target1">
   4:   <Target Name="Target1">
   5:     <DisplayTinos />
   6:   </Target>
   7:   <UsingTask
   8:         TaskName="DisplayTinos"
   9:         TaskFactory="CodeTaskFactory"
  10:         AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
  11:     <ParameterGroup />
  12:     <Task>
  13:       <Using Namespace="System"/>
  14:       <Using Namespace="System.IO"/>
  15:       <Code Type="Fragment" Language="cs">
  16:         <![CDATA[
  17: Log.LogMessage("Hola Valentino!");
  18: Log.LogMessage("Hola Martina!");
  19: ]]>
  20:       </Code>
  21:     </Task>
  22:   </UsingTask>
  23: </Project>

 

El resultado de ejecución del proyecto es el siguiente, donde es posible ver los logs con los nombres de los Tinos en la consola.

image

 

Para demostrar la flexibilidad que nos brinda el trabajo con Tareas autocontenidos, podemos modificar el código para que en lugar de mostrar dos mensajes con los nombres del Valentino y la Martina, nos muestre un Warning y un Error (líneas 17 y 18):

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
   2:          ToolsVersion="4.0"
   3:          InitialTargets="Target1">
   4:   <Target Name="Target1">
   5:     <DisplayTinos />
   6:   </Target>
   7:   <UsingTask
   8:         TaskName="DisplayTinos"
   9:         TaskFactory="CodeTaskFactory"
  10:         AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
  11:     <ParameterGroup />
  12:     <Task>
  13:       <Using Namespace="System"/>
  14:       <Using Namespace="System.IO"/>
  15:       <Code Type="Fragment" Language="cs">
  16:         <![CDATA[
  17: Log.LogWarning("Hola Valentino!");
  18: Log.LogError("Hola Martina!");
  19: ]]>
  20:       </Code>
  21:     </Task>
  22:   </UsingTask>
  23: </Project>

 

El resultado de la compilación del proyecto con la muestra del Warning y el Error es el siguiente, donde además es posible información adicional, como por ejemplo el número de línea donde se lanza el Warning o el Error.

image

 

Saludos @ Here

El Bruno (@elbruno en Twitter)

Archivado en: ,,,,
Comparte este post:

# [MSBUILD] Tareas autocontenidas/Inline Tasks en MSBuild 4.0 (XI)

Monday, September 6, 2010 11:52 AM by El Bruno

Buenas, una de las novedades más interesantes y más peligrosas que se incorporan en MSBuild 4.0 , es

# [MSBUILD] Definiendo propiedades en Tareas autocontenidas/Inline Tasks (XII)

Tuesday, September 7, 2010 7:40 AM by El Bruno

Buenas, en mi post anterior comentaba sobre las nuevas Inline Tasks introducidas en MSBuild 4.0. Además

# [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:46 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:10 PM by El Bruno

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

# [#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