无法加载文件或程序集异常

Sha*_*500 30 c# web-services

有关可能导致此异常的原因的任何想法?

我有一个webservice proj,当我加载我得到的链接

无法加载文件或程序集"Interop.DIB"或其依赖项之一.尝试加载格式不正确的程序.
异常详细信息:System.BadImageFormatException:无法加载文件或程序集"Interop.DIB"或其依赖项之一.尝试加载格式不正确的程序.

内部例外:

[BadImageFormatException:无法加载文件或程序集"Interop.DIB"或其依赖项之一.试图加载格式不正确的程序.]

[ConfigurationErrorsException:无法加载文件或程序集"Interop.DIB"或其依赖项之一.试图加载格式不正确的程序.]

[HttpException(0x80004005):无法加载文件或程序集"Interop.DIB"或其依赖项之一.试图加载格式不正确的程序.]

版本信息:
Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272

Sha*_*500 83

好的答案是得到Start-> Run-> type inetmgr并在左侧应用程序池中选择DefaultAppPool和应用程序的虚拟目录名称,并确保将32位应用程序设置为true,使用IIS7.0和Windows 7 64位. 在此输入图像描述


Mac*_*iej 28

BadImageFormatException通常意味着64对32位冲突.其中一个程序集设置为特定平台,即64位或32位,而另一个设置或默认为不同的平台.检查两个程序集是否适用于同一平台,最好是"任何CPU".换句话说,它可能是64位程序集正在尝试加载32位,反之亦然.

如果您正在调用为不同平台编译的COM或DLL,这也适用,例如,您从64位系统上的程序集调用32位COM/DLL,其中程序集的平台默认为x64.在这种情况下,调整组件的平台以匹配.

要更改平台,请转到项目属性 - >构建 - >平台.


Mik*_*ill 9

我在Visual Studio 2013中尝试在我的ASP.Net项目中使用64位.dll时遇到了这个问题.

解决方案是单击Tools\Options,然后勾选此框:

在此输入图像描述

  • 那个指针.惊人.您是手动执行此操作还是来自某个屏幕截图应用程序? (5认同)
  • 大声笑 !!我发现它在网络的某个地方,并经常在我的StackOverflow文章中使用它来振作起来一些看起来很无聊的图像! (4认同)

fsb*_*vio 6

我开始在Visual studio 2022中遇到此错误。

我的项目设置为AnyCPU,但某些dll被编译为x86,并且我无法更改它,因为我没有源代码。在 VS 的早期版本中,该项目可以运行。

我意识到,在 Visual Studio 的早期版本(例如,相对于 2019)中,默认 IIS 是在 x86 上运行(毕竟它也是 x86 进程),如下所示: 在此输入图像描述

但在 VS 2022 中,该选项默认处于选中状态。

解决方案:

一个解决方案是在“选项”->“项目和解决方案”中取消选中“对网站和项目使用 64 位版本的 IIS Express”选项。但是,这将更改所有项目的 IIS Express 版本。

第二个解决方案是仅针对该解决方案更改 IIS Express(我更喜欢这样做,因为我的大多数项目没有特定的已编译 dll)

1- 转到项目属性 -> Web。在服务器部分将位数更改为 x86: 在此输入图像描述

结论

最好的解决方案是将所有 dll 编译到同一平台(x86、x64、AnyCPU 等),但如果像我一样你无法做到这一点,这将为你解决。