【问题标题】:Removing Unit Test dll files when using WIX使用 WIX 时删除单元测试 dll 文件
【发布时间】:2011-11-16 15:27:08
【问题描述】:

我正在尝试使用 WIX 为我的项目创建 MSI。我有 HEAT 指向正确的目录并且它吐出的文件是正确的,但是由于某种原因,当我实际在其上运行 MSBuild 时,它也给了我所有的单元测试 dll 文件。

有人知道如何从构建过程中删除它们吗?

【问题讨论】:

    标签: .net msbuild wix windows-installer


    【解决方案1】:

    一种选择是编写一个 XSL 转换来修改生成的 HEAT 输出(例如删除不需要的文件):

    heat.exe dir <other arguments> -t my.xsl
    

    要删除特定文件,您的 xsl 可能类似于:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    >
      <xsl:output method="xml" indent="yes"/>
    
      <xsl:template match="@* | node()">
        <xsl:copy>
          <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="node()[child::node()[@Source='UnwantedAssembly.dll']]" />
    </xsl:stylesheet>
    

    此方法还允许您对文件进行其他更改。虽然只删除不需要的文件,但通常更简单的是从构建目录中删除它们或将所需文件移动到另一个目录并在那里运行 HEAT。

    【讨论】:

      【解决方案2】:

      通常您不会因为这个原因将 heat.exe 指向您的默认构建目录。编译产品的二进制文件后,添加第二个步骤,将您想要的文件暂存到第二个目录中。然后,将 heat.exe 指向暂存目录。这样您就可以更好地控制收集的文件和路径。

      【讨论】:

      • 这听起来像是一个很好的替代花哨的 xsl 文件。实际上,您是否将命令放在编译后构建步骤中?您如何处理 .pdb 或 .vhost.* 文件?
      • 我通常只在需要打包大量html帮助/文档文件时才使用harvester。基本上,可能会经常更改的文件或需要很少定制的大量文件,因为我永远不会真正查看生成的 .wsx 文件的内容或将其签入版本控制。任何比我手动输入更复杂的东西。
      猜你喜欢
      • 2019-11-26
      • 2021-08-07
      • 2010-09-16
      • 2014-01-06
      • 2017-01-17
      • 1970-01-01
      • 2018-02-26
      • 2019-12-16
      • 1970-01-01
      相关资源
      最近更新 更多