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

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

System.BadImageFormatException:无法加载文件或程序集“ {xxx.exe} ”或其某个依赖项。 试图加载格式不正确的程序。

是什么赋予了?


编辑:(不是由OP)完整的消息提取从dup获取方式更多的点击[谷歌]:

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

初始化安装时发生exception:System.BadImageFormatException:无法加载文件或程序集“file:/// C:\ xxx.exe”或其某个依赖项。 试图加载格式不正确的程序

一些更详细的完整性,以防止他人帮助…

请注意,现在这个例外的最常见的原因是试图将一个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

将无法工作(replace为其他框架版本: v1.1.4322 (仅限32位,因此不会出现此问题)和v4.0.30319 (如上所述))。

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

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

System.BadImageFormatException的完整细节 (说唯一的原因是不匹配的苦味真的是一个过分简化!)。

x64安装程序下出现BadImageFormatException另一个原因是, 在Visual Studio 2010中, 即使在x64系统上 ,默认的.vdproj安装项目types.vdproj生成32位的InstallUtilLib填充 (search“64位托pipe自定义操作抛出系统。 BadImageFormatExceptionexception“)。

确保最新的Framework(你编译你的应用程序的那个)在PATH中是第一个。 这解决了我的问题。 在这里find: http : //www.issociate.de/board/post/280574/Installutil_System.BadImageFormatException.html

我想你正在使用该工具的64位版本来安装一个32位应用程序。 我今天也遇到过这个问题,并使用这个框架path来迎合。

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

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

谢谢

萨钦Kalia

好的,这是我的问题,而且,固定它的东西似乎与上述非常相关。

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

我编写的服务,并试图使用installutil.exe安装它,并得到以下错误:

System.BadImageFormatException:无法加载文件或程序集“{filename.exe}”或其某个依赖项。 试图加载格式不正确的程序。

到目前为止,与原作者相同。

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

我使用了installutil.exe的64位版本,当然,Visual Studio 2010版本的输出是32位的。 只需在这里添加一些额外的值,就可以在C:\ Windows \ Microsoft.NET \ framework文件夹中find最新的.NET框架的32位版本和关联的installutil.exe 。 使用这个版本的installutil.exe修复了我的问题; 服务安装顺利!

我希望这能帮助别人。

万一它有助于任何人,我能够解决这个相同的例外使用这个答案类似的问题,但我没有得到使用installutil.exeexception。

我遇到过同样的问题。 我使用标准命令来执行。 这是呼吁对X86testing的X64滚动。 我需要指定X86而不是nunit-runner的X64版本。

总而言之,为了在64位系统上成功安装64位服务,Build和Project \ Build \ Platform都必须设置为x64。