4/8/2010 12:40 El Bruno

[MSBUILD] HowTo: Utilizar grupos de elementos en MSBuild (III)

image47dd1de4

Buenas,

hoy toca ver un poco somo funcionan el elemento <ItemGroup> en MSBuild. Este elemento permite definir una colección de elementos personalizados,en scripts de MSBuild, para luego poder trabajar con los mismos.

En el siguiente ejemplo, creo una colección de elementos <Cliente>, entre las líneas 6 y 11, con diferentes valores para cada uno de los mismos. Luego utilizo una tarea personalizada que concatena los valores de estos elementos (líneas 15 a 19); y los retorno en una propiedad llamada StringResult (línea 18). A continuación se muestra el valor de esta propiedad.

 

   1: <Project DefaultTargets="Inicio"
   2:          xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   3:   <UsingTask AssemblyFile="c:\srcBruno\Agile01\TfsBuild\bin\Debug\ElBruno.TfsBuild.dll"
   4:              TaskName="ElBruno.TfsBuild.StringConcatenate" />
   5:   <!-- Coleccion de elementos -->
   6:   <ItemGroup>
   7:     <Cliente Include="Bruno" />
   8:     <Cliente Include="Valentino" />
   9:     <Cliente Include="Martina" />
  10:     <Cliente Include="Pao" />
  11:   </ItemGroup>
  12:   <!-- Target Inicial -->
  13:   <Target Name="Inicio">
  14:     <!-- Concatena cadenas -->
  15:     <ElBruno.TfsBuild.StringConcatenate Items="@(Cliente)"
  16:                                         Separator=";" 
  17:                                         AppendLine="true">
  18:       <Output TaskParameter="StringResult" PropertyName="StringResult" />
  19:     </ElBruno.TfsBuild.StringConcatenate>
  20:  
  21:     <!-- Muestra el resultado -->
  22:     <Message Text="$(StringResult)" />
  23:   </Target>
  24: </Project>

El resultado de la ejecución de este proyecto es el siguiente:

image

 

Las colecciones de elementos, también pueden ser utilizadas para trabajar con cantidades “dinámicas” de elementos. El siguiente proyecto de MSBuild, define un ItemGroup en el que se agregan 2 elementos para trabajar con los archivos generados de Enterprise Library, que por lo general se almacenan en la ubicación [C:\EntLib50Src\bin]

  • <Dll>, obtiene todos los archivos con extensión .dll
  • <Exe>, obtiene todos los archivos con extensión .exe

Una vez definidos estos elementos, se concatena el valor de los mismos en 2 propiedades y se muestran las mismas en la consola de MSBuild.

   1: <Project DefaultTargets="Inicio"
   2:          xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   3:   <UsingTask AssemblyFile="c:\srcBruno\Agile01\TfsBuild\bin\Debug\ElBruno.TfsBuild.dll"
   4:              TaskName="ElBruno.TfsBuild.StringConcatenate" />
   5:   <!-- Coleccion de elementos -->
   6:   <ItemGroup>
   7:     <Dll Include="c:\EntLib50Src\bin\*.dll" />
   8:     <Exe Include="c:\EntLib50Src\bin\*.exe" />
   9:   </ItemGroup>
  10:   <!-- Target Inicial -->
  11:   <Target Name="Inicio">
  12:     <!-- Concatena cadenas -->
  13:     <ElBruno.TfsBuild.StringConcatenate Items="@(Dll)"
  14:                                         Separator=";"
  15:                                         AppendLine="false">
  16:       <Output TaskParameter="StringResult" PropertyName="StringResultDll" />
  17:     </ElBruno.TfsBuild.StringConcatenate>
  18:     <ElBruno.TfsBuild.StringConcatenate Items="@(Exe)"
  19:                                         Separator=";"
  20:                                         AppendLine="false">
  21:       <Output TaskParameter="StringResult" PropertyName="StringResultExe" />
  22:     </ElBruno.TfsBuild.StringConcatenate>
  23:     <!-- Muestra el resultado -->
  24:     <Message Text="$(StringResultDll)" />
  25:     <Message Text="=======================================" />
  26:     <Message Text="$(StringResultExe)" />
  27:   </Target>
  28: </Project>

 

El resultado de ejecución del proyecto es el siguiente:

image

 

 

 

 

Los proyectos de ejemplo se pueden descargar desde http://cid-bef06dffdb192125.office.live.com/self.aspx/Code%20Samples/2010%2008%2004%20MsBuild%20ItemGroups.zip

 

Saludos @ Here

El Bruno

Archivado en: ,,,
Comparte este post:

# [MSBUILD] Como obtener Metadata en elementos de ItemGroup (X)

Friday, September 03, 2010 11:40 AM by El Bruno

Buenas, en un par de post anteriores a este, escribí sobre la forma de trabajar con grupos de

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