0

经过很多麻烦,我有一个 heat.exe 命令字符串应该运行并将文件夹的文件放入 WXS 文件中。

看起来像这样

heat dir "$(var.SolutionDir)Web\obj\$(var.MyProject.Configuration)Package" -gg -g1 -cg PACKAGEFILES sreg -dr DEPLOYFOLDER -var "$(var.SolutionDir)Web\obj\$(var.MyProject.Configuration)Package" -out "$(var.SolutionDir)WebInstaller\PackageFragment.wxs"

我用它来获取它:http ://weblogs.sqlteam.com/mladenp/archive/2010/02/23/WiX-3-Tutorial-Generating-filedirectory-fragments-with-Heat.exe.aspx

但是,当我尝试将其复制到我在 VS2010 中的 WIX 项目的“属性->构建事件”下的预构建事件框中时 - VS2010 崩溃并且我无法加载我的项目,直到我直接从项目文件 xml 代码中删除命令.

我现在有两个问题:

  1. 这个命令字符串正确吗?
  2. 为什么我的项目会这样崩溃?

谢谢大家。

4

1 回答 1

1

项目崩溃是因为 Visual Studio 尝试将$(stuff)as MSBuild 属性解释为所有混淆和崩溃。

您需要通过直接编辑 .wixproj 文件将该命令行转换为 MSBuild 语法。这样您就可以绕过崩溃的 Visual Studio 中的解析代码。就像是:

<Exec Command='heat dir "..\Web\obj\$(Configuration)Package" -gg -g1 -cg PACKAGEFILES sreg -dr DEPLOYFOLDER -var "..\Web\obj\$(Configuration)Package" -out "..\WebInstaller\PackageFragment.wxs"'

注意:$(var.SolutionDir) 仅在 Visual Studio 中构建时可用,因此我建议不要使用它(在上面的示例中,我将其设为相对路径)。

于 2013-05-22T16:58:52.167 回答