我一直在尝试在我正在处理的项目中使用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中指定的文件。我无法弄清楚为什么他们不被认可!我有双重检查文件路径,他们是正确的。有什么想法吗?
答案 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>
这种方法似乎更容易,并且没有将文件添加到文件的根目录。
感谢大家的帮助。