作为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
我希望能够针对\OutDir
中的每个子文件夹创建一个zip文件。如果按照以下步骤操作:
<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中实现呢?最好不要使用自定义任务。