3/9/2010 11:39 El Bruno

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

image47dd1de4

Buenas,

en un par de post anteriores a este, escribí sobre la forma de trabajar con grupos de elementos en MSBuild. Cuando los grupos de elementos con los que trabajamos son grupos archivos, podemos acceder a información adicional que nos permite ver datos como la extensión de los archivos, la fecha de modificación, etc. El detalle completo de la metadata disponible se puede consultar aquí.

El siguiente proyecto de ejemplo, define un ItemGroup con una colección de elementos llamados <EntLib50Src> en la que se incluyen todos los archivos con extensión .bat que se almacenan en el directorio de Sources de Enterprise Library 5.0. Luego, en el MSBuild Target principal del proyecto, se muestra información adicional para los items, como por ejemplo el path de cada uno, el directorio raíz, el nombre de los archivos, etc.

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 
   2:          InitialsTargets="Target1">
   3:   <ItemGroup>
   4:     <EntLib50Src Include="c:\EntLib50Src\**\*.bat" />
   5:   </ItemGroup>
   6:   <Target Name="Target1">
   7:     <Message Text="Fullpath: %(EntLib50Src.FullPath)"/>
   8:     <Message Text="RootDir: %(EntLib50Src.RootDir)"/>
   9:     <Message Text="FileName: %(EntLib50Src.FileName)"/>
  10:     <Message Text="RelativeDir: %(EntLib50Src.RelativeDir)"/>
  11:   </Target>
  12: </Project>

 

El resultado de la  ejecución del proyecto es el siguiente, donde se puede ver como sólo se trabaja con los 8 archivos .bat que se distribuyen con el código fuente de EntLib.

image

 

 

 

Si cambiamos el proyecto para trabajar con clases de C#, archivos con extensión .cs:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 
   2:          InitialsTargets="Target1">
   3:   <ItemGroup>
   4:     <EntLib50Src Include="c:\EntLib50Src\**\*.cs" />
   5:   </ItemGroup>
   6:   <Target Name="Target1">
   7:     <Message Text="Fullpath: %(EntLib50Src.FullPath)"/>
   8:     <Message Text="RootDir: %(EntLib50Src.RootDir)"/>
   9:     <Message Text="FileName: %(EntLib50Src.FileName)"/>
  10:     <Message Text="RelativeDir: %(EntLib50Src.RelativeDir)"/>
  11:   </Target>
  12: </Project>

Podemos ver que el tiempo de ejecución del proyecto ha subido de menos de 1 segundo, a casi 7 segundos y que la información  es mucho más completa.

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: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