Dans le cadre de mon processus de construction dans MSBuild 4.0, je me retrouve avec la structure de répertoire suivant:En utilisant MSBuild à zip multiples répertoires de projet
\OutDir
\ProjectA
\File1.dll
\File2.dll
\File3.exe
\ProjectB
\Subfolder1
File4.html
\File5.dll
\File6.dll
\File7.exe
\ProjectC
\File8.dll
\File9.exe
Je veux être en mesure de créer un fichier zip par sous-dossier de \OutDir
. Si je fais ce qui suit:
<ItemGroup>
<ZipSource Include="\OutDir\**.*" />
</ItemGroup>
<MSBuild.Community.Tasks.Zip
Files="@(ZipSource)"
ZipFileName="OutDir\%(ZipSource.RecursiveDir)ZippedOutput.zip"
WorkingDirectory="OutDir" />
puis chaque sous-dossier est récursive zippé, qui fonctionne très bien pour ProjectA et ProjectC, mais se termine ProjectB avec deux fichiers zip, un de ses racine et un de ses sous-dossier. Mon autre exigence est que le nombre de projets n'est pas connu par le fichier de construction, donc je ne peux pas simplement créer un ItemGroup et énumérer les projets que je veux zipper.
Cette tâche serait facile dans NAnt à travers sa tâche foreach, mais comment puis-je l'obtenir dans MSBuild, de préférence sans recourir à des tâches personnalisées?
Malheureusement, la tâche Zip du pack d'extension MSBuild n'est pas compatible avec .NET 4 (le travail est en cours pour écrire un remplacement, mais il n'est pas encore disponible). –