【发布时间】:2010-08-16 07:27:05
【问题描述】:
作为我在 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 并枚举我想要压缩的项目。
通过它的 foreach 任务在 NAnt 中这项任务很容易,但我如何在 MSBuild 中实现这一点,最好不求助于自定义任务?
【问题讨论】:
标签: .net msbuild build-automation