当前位置:  开发笔记 > 编程语言 > 正文

System.BadImageFormatException:无法加载文件或程序集(来自installutil.exe)

如何解决《System.BadImageFormatException:无法加载文件或程序集(来自installutil.exe)》经验,为你挑选了4个好方法。

我正在尝试使用InstallUtil.exe安装Windows服务,并收到错误消息

System.BadImageFormatException:无法加载文件或程序集' {xxx.exe}'或其依赖项之一.尝试加载格式不正确的程序.

是什么赋予了?


编辑:(不是由OP)从dup获取的完整消息获得更多点击[对于googleability]:

C:\ Windows\Microsoft.NET\Framework64\v4.0.30319> InstallUtil.exe C:\ xxx.exe Microsoft(R).NET Framework安装实用程序版本4.0.30319.1版权所有(c)Microsoft Corporation.版权所有.

初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集'file:/// C:\ xxx.exe'或其依赖项之一.尝试加载格式不正确的程序.

Ruben Bartel.. 146

一些更详细的完整性,以防它有助于某人......

请注意,目前这种异常的最常见原因是尝试将32位特定的(/platform:x86)DLL加载到64位进程中,反之亦然(即将64位特定的(/platform:x64)DLL 加载到进程中32位).如果您platform是非特定的(/platform:AnyCpu),则不会出现这种情况(假设没有引用的依赖项具有错误的位数).

换句话说,运行:

%WINDIR%\ Microsoft.NET \框架\ V2.0.50727\installutil.exe

要么:

%windir%\ Microsoft.NET\Framework 64\v2.0.50727\installutil.exe

将无法工作(在其他框架版本中替代:( v1.1.4322仅限32位,因此不会出现此问题)并且v4.0.30319如上所述).

显然,正如另一个答案中所述,还需要installutil您运行的.NET版本号> =(最好是=)您运行安装程序的EXE/DLL文件的版本号.

最后请注意,在Visual Studio 2010中,工具将默认生成x86二进制文件(而不是以前的任何CPU).

System.BadImageFormatException的完整细节(说唯一的原因是不匹配的苦味实际上是一个粗略的过度简化!).

BadImageFormatExceptionx64安装程序下的另一个原因是,在Visual Studio 2010中,默认的.vdprojInstall Project类型生成32位InstallUtilLib填充程序,即使在x64系统上也是如此(搜索"64位托管自定义操作抛出System.BadImageFormatException异常")这页纸).



1> Ruben Bartel..:

一些更详细的完整性,以防它有助于某人......

请注意,目前这种异常的最常见原因是尝试将32位特定的(/platform:x86)DLL加载到64位进程中,反之亦然(即将64位特定的(/platform:x64)DLL 加载到进程中32位).如果您platform是非特定的(/platform:AnyCpu),则不会出现这种情况(假设没有引用的依赖项具有错误的位数).

换句话说,运行:

%WINDIR%\ Microsoft.NET \框架\ V2.0.50727\installutil.exe

要么:

%windir%\ Microsoft.NET\Framework 64\v2.0.50727\installutil.exe

将无法工作(在其他框架版本中替代:( v1.1.4322仅限32位,因此不会出现此问题)并且v4.0.30319如上所述).

显然,正如另一个答案中所述,还需要installutil您运行的.NET版本号> =(最好是=)您运行安装程序的EXE/DLL文件的版本号.

最后请注意,在Visual Studio 2010中,工具将默认生成x86二进制文件(而不是以前的任何CPU).

System.BadImageFormatException的完整细节(说唯一的原因是不匹配的苦味实际上是一个粗略的过度简化!).

BadImageFormatExceptionx64安装程序下的另一个原因是,在Visual Studio 2010中,默认的.vdprojInstall Project类型生成32位InstallUtilLib填充程序,即使在x64系统上也是如此(搜索"64位托管自定义操作抛出System.BadImageFormatException异常")这页纸).



2> Epaga..:

确保最新的框架(您编译应用程序的框架)首先在PATH中.这解决了我的问题.(在论坛上找到)


这是在Archive.org https://web.archive.org/web/20100527204545/http://www.issociate.de/board/post/280574/Installutil_System.BadImageFormatException.html

3> Sachin Kalia..:

我认为您使用该工具的64位版本来安装32位应用程序.我今天也遇到过这个问题,并使用此框架路径来满足需求.

C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319

它应该安装你的32位应用程序就好了.



4> 小智..:

好吧,这就是我遇到的问题,而且修正了它,似乎与上述问题非常相关.

我正在使用Visual Studio 2010 Express.我写了一个没有真正做任何事情的测试服务.这只是后来真正的实践.

我编写了该服务并尝试使用它安装它installutil.exe并收到以下错误:

System.BadImageFormatException:无法加载文件或程序集"{filename.exe}"或其依赖项之一.尝试加载格式不正确的程序.

到目前为止与原作者相同.

Ruben关于Visual Studio 2010的32位输出的观察是这里的救世主.

我使用的是64位版本,installutil.exe当然,Visual Studio 2010版本的输出是32位.只是在这里添加一些额外的价值,你可以找到最新的.NET Framework和32位版本的关联installutil.exeC:\ WINDOWS\Microsoft.NET \框架文件夹.使用此版本installutil.exe修复了我的问题; 服务安装顺利!

我希望这可以帮助其他人.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有