Usando MSBuild para comprimir múltiples directorios de proyectos
Como parte de mi proceso de compilación en MSBuild 4.0, termino con la siguiente estructura de directorios:
\OutDir
\ProjectA
\File1.dll
\File2.dll
\File3.exe
\ProjectB
\Subfolder1
File4.html
\File5.dll
\File6.dll
\File7.exe
\ProjectC
\File8.dll
\File9.exe
Quiero poder crear un archivo zip por subcarpeta de\OutDir
. Si hago lo siguiente:
<ItemGroup>
<ZipSource Include="\OutDir\**.*" />
</ItemGroup>
<MSBuild.Community.Tasks.Zip
Files="@(ZipSource)"
ZipFileName="OutDir\%(ZipSource.RecursiveDir)ZippedOutput.zip"
WorkingDirectory="OutDir" />
entonces cada subcarpeta se comprime recursivamente, lo que funciona bien para ProjectA y ProjectC, pero ProjectB termina con dos archivos zip, uno de su nivel raíz y uno de su subcarpeta.
Mi otro requisito es que el archivo de compilación no conoce la cantidad de proyectos, por lo que no puedo simplemente crear un ItemGroup y enumerar los proyectos que quiero comprimir.
Esta tarea sería fácil en NAnt a través de su tarea foreach, pero ¿cómo puedo lograr esto en MSBuild, preferiblemente sin recurrir a tareas personalizadas?