11/10/2010 16:49
El Bruno
[MSBUILD] Tareas comunes para trabajar con archivos en MSBuild

Buenas,
MSBuild posee Out Of The Box una serie de tareas que permiten compilar un proyecto, mostrar mensajes en la consola, etc.; y entre ellas hay varias que son muy útiles para trabajar con archivos. Como uno de los principios que siempre intento seguir es no reinventar la rueda, si en algún momento necesito copiar un archivo, por ejemplo; pues me fijaré si no existe una tarea OOTB para esta acción antes de escribir mi propia Custom Task. El listado completo de tareas OOTB es el siguiente http://msdn.microsoft.com/en-us/library/7z253716.aspx, y dentro del mismo hoy voy a trabajar con alguna de las las siguientes tareas:
- Copy. Copia uno o más archivos.
- Delete. Elimina uno o más archivos.
- MakeDir. Crea uno o más directorios.
- Move. Mueve uno o mas archivos.
- RemoveDir. Elimina uno o más directorios.
El siguiente proyecto utiliza estas tareas para trabajar con los binarios que se instalan con Enterprise Library 5.0 en [C:\EntLib50Src\bin\]
1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
2: InitialTargets="Target1">
3: <PropertyGroup>
4: <CreateDir>C:\NewDir\</CreateDir>
5: </PropertyGroup>
6: <ItemGroup>
7: <SourceFiles Include="C:\EntLib50Src\bin\*.*"/>
8: </ItemGroup>
9: <Target Name="Target1">
10: <!-- Crea un directorio en C:\NewDir\-->
11: <MakeDir Directories="$(CreateDir)" />
12: <!-- Copia los binarios de EntLib -->
13: <Copy SourceFiles="@(SourceFiles)"
14: DestinationFiles="@(SourceFiles->'$(CreateDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
15: <!-- Elimina los archivos xml -->
16: <ItemGroup>
17: <DeleteFiles Include="$(CreateDir)*.xml"/>
18: </ItemGroup>
19: <Delete Files="@(DeleteFiles)" />
20: </Target>
21: </Project>
Si bien es auto explicativbo (ver los comentarios), este proyecto realiza lo siguiente:
- Crea un nuevo directorio (línea 11)
- Copia todos los archivos de EntLib al nuevo directorio (líneas 13 y 14)
- Elimina los archivos con extensión *.xml (línea 19)
Si vemos el directorio original y el nuevo directorio creado, podremos ver la diferencia entre los mismos.

Saludos @ Here
El Bruno

Archivado en: Visual Studio 2010,Build,Code Sample,MSBuild
Comparte este post: