Использование 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, желательно не прибегая к пользовательским задачам?

Ответы на вопрос(2)

Ваш ответ на вопрос