【问题标题】:MsBuild Zip every file in directory in separate Zip filesMsBuild 将目录中的每个文件压缩到单独的 Zip 文件中
【发布时间】:2024-01-16 17:22:01
【问题描述】:

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

我需要将所有这些文件分别压缩到一个单独的 zip 文件中。

示例: - 文件 1.xml - 文件2.xml - 文件3.xml

在 msbuild 之后: - 文件1.zip - 文件2.zip - 文件3.zip

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

有没有办法通过自动化的 msbuild 任务来做到这一点?

提前致谢。

【问题讨论】:

    标签: msbuild build-automation msbuild-task


    【解决方案1】:

    使用MSBuild Extension Pack 中的Zip task。那么你的 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>
    

    【讨论】:

      最近更新 更多