Wix 构建顺序 - msbuild 和 Heat

Wix Build Order - msbuild & Heat

我正在尝试使用 Heat 扩展我们现有的 Wix 项目,以将来自另一个项目的输出目录的所有文件包含在安装程序中。不知何故,我错过了一些应该很容易的事情,因为我想这是一项非常常见的任务。

解决方案如下所示:

SomeDependencyA.csproj
SomeDependencyB.csproj (Depends on SomeDependencyA)
WindowsService.csproj (Depends on SomeDependencyB)
Installer.wixproj(Depends on WindowsService.csproj)

Wix 基本上应该从 WindowsService 输出文件夹中 grep 任何东西,并从中构建 msi 包。流程应该是:

我的问题是:Where/how 我必须包括对 Heat 的调用吗? Pre-Build Step 和 BeforeBuild Target 不起作用,因为此时 WindowsService 和 Dependencies 尚未构建。 AfterBuild 不会有帮助,因为此时生成的 Fragment 将不再被考虑。我一直在寻找一些构建目标,它是在构建所有依赖项之后但在构建安装程序项目本身之前调用的。应该很容易,但我还没弄明白。

BeforeBuild 目标可能会在依赖项目完成其构建之前发生。

我过去用于此类构建排序的解决方案是为 BeforeBuild 目标添加 DependsOnTargets;

对于 csproj:

<Target Name="BeforeBuild" DependsOnTargets="ResolveReferences">  

对于 vcxproj:

<Target Name="BeforeBuild" BeforeTargets="PrepareForBuild">

这将强制项目等待,直到相关项目在 运行 BeforeBuild 目标之前完成。