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

标签 msbuild build-automation msbuild-task

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

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

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

msbuild 之后: - 文件1.zip - 文件2.zip - file3.zip

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

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

提前致谢。

最佳答案

使用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>

关于MsBuild 将目录中的每个文件压缩为单独的 Zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436197/

相关文章:

visual-studio-2008 - MSBuild 覆盖项目引用以解析为预编译程序集

visual-studio-2010 - 文件更改后 msbuild.exe 不会提供新输出

msbuild - 在 VSTS 中,如何将电子邮件通知任务添加到构建和发布定义中?

android - 如何从命令行运行 'rebuild project'

build-automation - 持续/自动部署对桌面应用程序有意义吗?

continuous-integration - 作为持续构建的一部分,使用 gpg 对 RPM 进行签名 - 如何避免提示输入密码?

continuous-integration - WiX 3.0 在持续集成执行时​​抛出错误 217

visual-studio - 在 msbuild 任务中将项目添加到 visual studio 解决方案

azure-devops - DevOps Pipeline - 在构建步骤中找不到包

msbuild - 是否有 MSBuild 任务会将行写入文件的 *start* ?