2

我在使用命令时遇到问题

"$(WIX)bin\heat.exe" project "$(SolutionDir)\My.project.csproj" -dr FOLDER -cg filesUP -pog:Content -pog:Satellites -gg -g1 -sf -srd -suid -var "var.SourceDir" -out "$(ProjectDir)FilesFragment.wxs"

输出文件忽略此参数-var "var.SourceDir"并使用var.My.project.ProjectDir

...
<Component Id="My.project.Content.Web.config" Directory="My.project.Content" Guid="10E9C2E0-2A35-4D6F-B12D-D66AE2E831D4">
    <File Id="My.project.Content.Web.config" Source="$(var.My.project.ProjectDir)\Web.config" />
</Component>
...

Visual Studio 2010 返回此错误:

未定义的预处理器变量“$(var.My.project.ProjectDir)”。
C:\My.project\My.project.Installer\FilesFragment.wxs

我进行了搜索,但只找到了heat与参数dir一起使用的示例。

我在文档中没有找到任何说明heat 项目不支持参数-var的内容。

有解决办法吗?

4

2 回答 2

1

我发现的一种解决方案是不使用以下命令:

"$(WIX)bin\heat.exe" project "$(SolutionDir)\My.project.csproj" -dr FOLDER -cg filesUP -pog:Content -pog:Satellites -gg -g1 -sf -srd -suid -var var.SourceDir -out "$(ProjectDir)FilesFragment.wxs"

删除参数-var var.SourceDir并在其位置设置环境变量My.project.ProjectDir并删除参数-dr FOLDER并在文件Setup.wxs中设置一个 idMy.project.Content在其位置。

这样,命令应如下所示:

"$(WIX)bin\heat.exe" project "$(SolutionDir)\My.project.csproj" -cg filesUP -pog:Content -pog:Satellites -gg -g1 -sf -srd -suid -out "$(ProjectDir)FilesFragment.wxs"

在我的用例中,到目前为止,我对这个解决方案没有任何问题。

于 2012-08-21T13:57:31.093 回答
0

我在我的项目中使用这个选项没有问题。也许,引号是不必要的?尝试-var var.SourceDir代替-var "var.SourceDir".

另一个猜测:你收获了一个项目(heat.exe project)。可能是这个选项忽略了-var开关,并用与项目相关的东西覆盖它。据我记得,project收割型在高温下效果不佳,不建议使用……您可以尝试运行heat.exe dir,看看它-var是否正确通过。

于 2012-08-17T14:58:54.100 回答