VS 2008部署项目创建的安装程序失败,错误为“ System.BadImageFormatException”

时间:2018-10-16 08:10:42

标签: c# visual-studio-2008 windows-installer visual-studio-setup-proje

我已经用Visual Studio 2008创建了一个安装程序。VS项目类型是部署项目。该安装程序在某些环境中会失败,但在其他环境中也会完美运行。

例如,安装程序在运行Windows Server 2012 R2 Standard的虚拟机中编译。当然,安装在那里成功。但是,它在运行相同Windows版本的其他虚拟机中失败。

错误消息为:“错误1001。初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集'file:Custom actions.dll'或其依赖项之一。此程序集由运行时生成比当前加载的运行时新,无法加载。”

在安装程序解决方案中的所有应用程序中,目标框架均为3.5。另外,“自定义操作”库中的引用还具有.NET 2.0或3.5版。

故障环境中缺少什么?从哪里开始搜索?

2 个答案:

答案 0 :(得分:0)

博客 :也许check this blog quickly。本质上: 1) bitness 32/64 2) corrupted binary file 3) configuration issues app.config < / strong>)。

InstallUtilLib.dll :这是一个类似的答案:System.BadImageFormatException: Could not load file or assembly (from installutil.exe)。它链接到此MSDN说明:64-bit managed custom actions throw a System.BadImageFormatException exception。似乎有可能。


替代品 :真正的答案-恕我直言-将avoid Visual Studio Installer projects due to a number of known problems用于此类项目。 The WiX toolkit是一个很好的开源替代方案。并且有other, commercial options。还有more elaborate details的替代版本。


某些链接

答案 1 :(得分:0)

此错误实际上只有两个原因:

  1. 您有32位(或64位)代码试图调用相反体系结构的程序集。在自定义操作调用中,您需要逐一跟踪调用顺序,并注意可能被JIT编译到系统体系结构的AnyCpu程序集类型,而不是要调用的程序集。

  2. 不兼容的NET体系结构。在您的情况下,您引用的程序集都是基于NET 2.0 CLR的。如果它们最终在NET 4.0 CLR中运行,它们将失败。查看启动条件以了解发生了什么可能会有所帮助。

我还认为Visual Studio 2008不是安装项目的良好基础。 VS Community Edition是免费的,并且将托管附加的Installer项目。当然,VS 2008并未意识到NET 4.0 CLR。