我有一个使用Burn的安装程序,我在我的(64位)开发机器上构建安装程序没有问题。在我们的(64位)构建服务器上,我收到此错误:
[步骤1/3] 2014-04-24 10:40:09,800 [2796] WARN JetBrains.Container.Log4netDefaultLoggerInitializer - 当前域中未处理的异常:System.BadImageFormatException:无法加载文件或程序集&# 39; file:/// C:\ Program Files(x86)\ WiX Toolset v3.8 \ bin \ Heat.exe'或其中一个依赖项。尝试加载格式不正确的程序。
从格式不正确的警告显示我发生了x86 / x64冲突,但在哪里?使用安装程序的解决方案中的所有项目都设置为Any CPU,TeamCity中的构建参数将构建为x64。我的安装程序项目设置为x86,我认为这是问题所在。我已经尝试将安装程序设置为x64,但之后我收到类似这样的错误:
这个64BitComponent MyAppPool使用32BitDirectory INSTALLLOCATION
我认为TeamCity正在尝试将x86 Burn.exe作为x64运行(因为那是我如何配置构建)因此问题,但解决方案是什么?我需要构建到x64,因此将构建设置为x86不是一个选项。
答案 0 :(得分:0)
由于Burn框架的底层模型是用C ++编写的,并且编译为x86模块,因此您还需要将程序集定位到x86(而不是“任何CPU”)。默认情况下,如果加载的第一个程序集在x64模式下运行,那么任何x86的下游程序集加载都可能会失败,因此为了安全起见,您应将它们全部定位到x86。