我正在为Visual Studio解决方案收集目录。
到目前为止,它可以在我的本地系统上运行,因为正在尊重项目构建顺序。
当我在构建服务器上运行安装程序时,它会找到正确的目录,但在构建安装文件时尚未创建。它会引发HEAT5052
错误,说The directory 'a:\b\c' could not be found
。
有没有办法等待"在构建所有项目引用之后,直到或执行heat命令?
答案 0 :(得分:8)
好的,所以我花了好几个小时来弄清楚如何在所有参考文献被重新启动后解雇Heat
。我只使用<PreBuildEvent>
命令行以及<PostBuildEvent>
和Heat
目标找到了BeforeBuild
和AfterBuild
的解决方案。
所以我在wix2010.targets
文件中找到了所有类型的目标
Program files (x86)\MSBuild\Microsoft\Wix\
文件夹。它包含一个名为AfterResolveReferences
的目标,它就是这样做的。所以这是我最终得到的代码(以防有人感兴趣):
<Target Name="AfterResolveReferences">
<HeatDirectory
ToolPath="$(WixToolPath)"
OutputFile="Product.Binaries.wxs"
SuppressFragments="$(HarvestDirectorySuppressFragments)"
Transforms="Filter.xslt"
Directory="$(HarvestFolder)"
DirectoryRefId="MY_FOLDER"
ComponentGroupName="Binaries"
GenerateGuidsNow="true"
SuppressRootDirectory="true"
SuppressRegistry="true"
PreprocessorVariable="var.App.TargetDir">
</HeatDirectory>
</Target>
答案 1 :(得分:0)
我遇到了同样的问题,通过结合接受的答案和this answer来解决此问题,以确保我正在复制文件的构建后事件始终运行:
<RunPostBuildEvent>Always</RunPostBuildEvent>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
此外,我的构建服务器正在使用MSBuild命令行,并且我使用this answer来定位本地MSBuild.exe,因此无需推送到构建服务器就可以在本地测试更改。