我们使用 HEAT 为我们的 Web 项目安装程序构建一个文件。我想知道是否有一种方法可以将文件包含在编译中,但不包含在项目中。
我需要这个的原因是我不想在我们的源代码管理中签入文件,而是在我们构建 wixproj 时构建它。否则,我们必须劫持/签出文件才能可靠地构建项目。
我们使用 HEAT 为我们的 Web 项目安装程序构建一个文件。我想知道是否有一种方法可以将文件包含在编译中,但不包含在项目中。
我需要这个的原因是我不想在我们的源代码管理中签入文件,而是在我们构建 wixproj 时构建它。否则,我们必须劫持/签出文件才能可靠地构建项目。
如果您使用 MSBuild 和 .wixproj 来构建您的 .MSI,那么您需要从.wixprojHEAT
的Compile
项目中获取输出。如果不包含该文件,它将不会被编译成最终的 .MSI。
幸运的是,MSBuild 提供了很多选项来动态包含项目。例如,您可以在 .wixproj 中有一个自定义目标来运行HEAT
并添加输出
<Target Name='RunHeat'>
<Exec Command='heat.exe param param param -o path\to\output.wxs' />
<ItemGroup>
<Compile Include='path\to\output.wxs' />
</ItemGroup>
</Target>
现在,如果您让目标在RunHeat
目标之前运行Compile
,wix.targets
那么Compile
生成的项目RunHeat
将包含在Compile
目标中。鉴于 MSBuild 的灵活性,您可能有十几种其他方法可以完成此任务。
希望有帮助,祝你好运!