在MSBuild中使用Zip任务

时间:2014-07-24 22:10:42

标签: msbuild

我一直在尝试在我正在处理的项目中使用msbuild的zip任务。

我的项目文件如下所示:

<PropertyGroup> <MSBuildCommunityTasksPath>$(SolutionDir)\.build</MSBuildCommunityTasksPath> </PropertyGroup> 

<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />

<ItemGroup>
<FileToZip include="C:\FilePath"></FilesToZip>
<FileToZip include="C:\FilePath"></FilesToZip>
</ItemGroup>

<Target Name="BeforeBuild">

<PropertyGroup>
<ReleasePath>\releasepath</ReleasePath>

<Zip Files="@(FilesToZip)" WorkingDirectory="$(ReleasePath)" ZipFileName="HTMLeditor.html" ZipLevel="9" />

</Target>

但是,zip文件会更新,但不包含项目组FilesToZip中指定的文件。我无法弄清楚为什么他们不被认可!我有双重检查文件路径,他们是正确的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我想你想做这样的事情:

<ItemGroup>
  <FileToZip include="C:\FilePath;C:\FilePath"/>
</ItemGroup>

正如我在评论中提到的,只是创建一个变量(FileToZip)并用不同的值重复两次并不会给你一个包含这两个值的数组。你最终只得到最后一个值(而不是一个数组)。您的include属性是一个选择器,用于构建数组,它可以包含多个值,通配符和其他模式,用于为您构建该数组。

以下是MSDN的链接,为您提供有关如何使用Include属性的更多信息:http://msdn.microsoft.com/en-us/library/ms171454.aspx

答案 1 :(得分:0)

我最后放弃了ItemGroup,并采用了另一种方式。

<Target Name="Zip"> 

<CreateItem Include="FilesToInclude" >          

<Output ItemName="ZipFiles" TaskParameter="Include"/> 

<Zip ZipFileName="ZipFile.zip" WorkingDirectory="FolderToWriteZipTo" Files="@(ZipFiles)" /> 

</Target>

这种方法似乎更容易,并且没有将文件添加到文件的根目录。

感谢大家的帮助。