Использование MSBuild для архивации нескольких каталогов проекта
В рамках процесса сборки в MSBuild 4.0 я получаю следующую структуру каталогов:
\OutDir
\ProjectA
\File1.dll
\File2.dll
\File3.exe
\ProjectB
\Subfolder1
File4.html
\File5.dll
\File6.dll
\File7.exe
\ProjectC
\File8.dll
\File9.exe
Я хочу иметь возможность создать один ZIP-файл для каждой подпапки\OutDir
, Если я сделаю следующее:
<ItemGroup>
<ZipSource Include="\OutDir\**.*" />
</ItemGroup>
<MSBuild.Community.Tasks.Zip
Files="@(ZipSource)"
ZipFileName="OutDir\%(ZipSource.RecursiveDir)ZippedOutput.zip"
WorkingDirectory="OutDir" />
затем каждая подпапка рекурсивно архивируется, что прекрасно работает для ProjectA и ProjectC, но ProjectB заканчивается двумя файлами zip, одним из его корневого уровня и одной из его подпапок.
Мое другое требование заключается в том, что число файлов проекта не известно, поэтому я не могу просто создать ItemGroup и перечислить проекты, которые я хочу сжать.
Эта задача была бы проста в NAnt через задачу foreach, но как я могу добиться этого в MSBuild, желательно не прибегая к пользовательским задачам?