MsBuild将目录中的每个文件压缩到单独的Zip文件中

时间:2012-02-24 18:38:30

标签: msbuild build-automation msbuild-task

我有一个包含大量* .xml文件的文件夹。

我需要在单独的zip文件中压缩所有这些文件。

实施例: - file1.xml - file2.xml - file3.xml

msbuild之后: - file1.zip - file2.zip - file3.zip

请注意,我不需要压缩一个ZIP中的所有文件,并且文件夹中的.xml文件数量每次都会有所不同。

无论如何使用自动msbuild任务执行此操作?

提前致谢。

1 个答案:

答案 0 :(得分:3)

使用Zip task中的MSBuild Extension Pack。然后您的MSBuild目标可以是:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="ZipFiles">

  <UsingTask TaskName="MSBuild.ExtensionPack.Compression.Zip"
           AssemblyFile="..\MSBuildExtensionPack\Releases\4.0.4.0\MSBuild.ExtensionPack.dll"  />

  <Target Name="ZipFiles">
    <ItemGroup>
      <FilesToZip Include="xmls\**\*.xml"/>
    </ItemGroup>

    <Message Text="Zipping '%(FilesToZip.Identity)'" Importance="high" />
    <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create"
                                           CompressFiles="%(FilesToZip.FullPath)"
                                           ZipFileName="%(FilesToZip.Filename).zip"
                                           RemoveRoot="%(FilesToZip.RootDir)%(FilesToZip.Directory)" />

  </Target>  

</Project>