无法加载文件或程序集“xxx”或其依赖项之一。尝试加载格式不正确的程序

时间:2009-10-30 05:52:14

标签: c#

我刚刚将Subversion的修订版检出到了一个新文件夹。打开解决方案,我在运行时得到了这个:

无法加载文件或程序集“xxxx”或其某个依赖项。尝试加载格式不正确的程序。

这与我前一段时间检查过的代码相同。为什么现在这样做?我现在也在xxx项目的bin文件夹中看到Debug x86而不仅仅是Debug。什么是Debug x86,为什么我不像以前那样在bin文件夹中使用Debug?

9 个答案:

答案 0 :(得分:243)

听起来项目的一部分是为x86构建的,而其余部分是为任何CPU / x64构建的。这也是我的意思。你在运行x64(或呃...... IA64)吗?

检查项目属性并确保为“任何CPU”构建所有内容。如果你在Visual Studio中,你可以通过转到屏幕顶部工具栏上的“x86”或“Any CPU”菜单(“Debug”/“Release”菜单旁边)来检查所有内容“配置管理器......”

答案 1 :(得分:174)

如果在64位服务器上运行IIS 7+中的站点时出现此错误,则可能具有32位的程序集,并且您的应用程序池将选项“启用32位应用程序”设置为False;将此设置为true并重新启动站点以使其正常工作。

答案 2 :(得分:37)

尝试使用可怕的 Business Objects 4 for .Net SDK时出现此错误。

它们提供了五个BusinessObjects * .dll文件,但它们都是64位。

要启用我的网页,我需要点击工具\选项,然后在VS2013中更改此设置:

enter image description here

答案 3 :(得分:31)

inetmgr然后来到应用程序池 - >池的高级设置 - >将“启用32位应用程序”选项设置为true; 并重新启动IIS。 再检查一下。!

答案 4 :(得分:6)

在IIS上运行的应用程序上的BadImageFormatException(不是从VS运行,因为visual studio通过使用“任何CPU”的构建来解决问题)可能由以下原因引起:

该站点是一个服务器,它是x64,而应用程序池的启用32位应用程序的默认设置为False。你有32位程序集

在Visual Studio的级别上,修复程序为:

  1. 将项目设置“目标CPU”更改为“ANYCPU”

答案 5 :(得分:6)

确保验证“首选32位”的设置。在我的情况下,Visual Studio 2012默认选中此设置。尝试使用外部DLL中的任何内容都失败,直到我取消选中“首选32位”

enter image description here

答案 6 :(得分:4)

这肯定是一些问题,有些项目是为x86兼容而不是任何CPU而构建的。如果我不得不猜测我会说你的项目之间的一些引用可能是在一些bin \ debug文件夹中引用dll而不是项目引用。

当为x86而不是'Any CPU'编译项目时,dll会进入bin \ x86 \ debug文件夹而不是bin \ debug(这可能是你的引用所在的位置)。

但无论如何,您应该在项目之间使用项目引用。

答案 7 :(得分:0)

如果在Visual Studio中使用IIS表达工作且发布失败时请尝试:enter image description here

答案 8 :(得分:0)

在我的情况下,它通过转到项目属性并在目标框架下工作,我选择了.NET Framework4。这是因为我已移至已安装了其他更高版本.NET框架的新计算机,并且该项目默认选择了它们。 。 看看适合您的目标框架。