无法加载文件或程序集exception

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

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

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

内部exception:

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

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

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

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

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

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

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

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

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

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

在此处输入图像描述

根据我的经验,最常见的原因是您对引用的程序集进行了更改,该程序集需要使用更改的程序集重建其他程序集,并且不重建它们。

示例#1:您有一个引用DLL的EXE。 您向引用的DLL添加了一些内容,它添加了一个新方法,新参数等等。 这改变了DLL的外部“签名”; 也就是说,各种入口点的记忆位置。 您不重建EXE。 当EXE加载并尝试引用新DLL时,其旧入口点不再有效,因此无法执行所需的代码。

示例#2:您有一个引用DLL的x86 EXE。 此DLL也必须为x86(或任何CPU)编译。 如果你为x64重建它,那么在32位空间中运行的EXE将无法理解指令并注册对64位“扩展”世界的引用,并将为叔叔哭泣。

我在Windows 10 x64上的Visual Studio 2015上遇到了同样的问题。 我已经在任何CPU模式下编译了。 这是一个默认的MVC4应用程序(没有添加任何内容)。 我找到了一个适合我的简单解决方案: https : //github.com/aspnet/Home/issues/524

在VS 2015中:工具>选项>项目和解决方案> Web项目>将64位版本的IIS Express用于网站和项目

如果我不得不猜测,它是a)没有找到内部组件或b)COM DLL没有在本地注册表中注册。 当您使用COM进行编辑时,仅将DIB复制到/ bin文件夹是不够的。

我相信(B)是最可能的答案。

对我有用的是将程序集添加到GAC。 为此,我从Visual Studio命令提示符运行gacutil -i PATH_TO_ASSEMBLY

我终于通过删除IIS Express的applicationhost.config中的条目(C:\ Users {username} \ Documents \ IISExpress \ config \ applicationhost.config)来解决此exception。

我还停止了IIS Express实例,在VS中清理并重建。 然后更改配置文件,然后重新启动VS 2013。

此问题的替代方法是更改​​项目的构建属性。

对于vb.net得到项目 – >属性 – >编译 – >高级编译选项这里更改目标CPU

对我有用的是在我的机器上进行BIOS更新!

这项工作对我来说,如果不适合你,不要投票。 这是不礼貌的

因此,如果我将C#项目从任何CPU更改为x86(所有dll都在WIN32中编译),从Properties – > Build – > Platform Target,它就可以工作。 我在64位Win7电脑上工作,如果我使用任何CPU作为目标,它就找不到包装器dll。

 https://www.codeproject.com/Questions/358717/Could-not-load-file-or-assembly-dll-file 

修复了我的错误,将构建选项更改为:

在我的C#.net win项目中:

属性>构建>平台目标>’x86′

我不小心将其值更改为“任何CPU”而忘记更改它。