ChatGPT解决这个技术问题 Extra ChatGPT

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

c#

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

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

这是我不久前检查过的相同代码。为什么现在要这样做?我现在还在那个 xxx 项目的 bin 文件夹中看到了 Debug x86 而不仅仅是 Debug。什么是 Debug x86,为什么我不像以前在 bin 文件夹中那样只使用 Debug?


G
Grant Winney

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

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


它也在 Project->Properties->Build 或 Debug->Properties->Build 中。刚刚更新了 VS2015,版本 14.0.25123.00 更新 2。这个更新刚刚发布 5/10/16(昨天!)。我发现平台目标设置为 x64,这导致了错误。设置为“任何 CPU”修复它。
N
Nick Whiu

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


@Mayhem50 这里也一样。这取决于错误发生的位置。如果是通过 Visual Studio 和 Cassini Web 服务器,Fraser 是对的。如果它发生在 IIS7+ 中,尼克斯的回答可能是最有可能的解决方法。
这对我来说是完美的答案(将站点从 x86 上的 IIS6 移动到 x64 上的 IIS 7)
是的,它做到了。我将一个站点从 x86 上的 IIS6 移动到 x64 上的 IIS 7。太感谢了!
M
Mike Gledhill

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

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

要加载我的网页,我需要单击 Tools\Options,然后在 VS2013 中更改此设置:

https://i.stack.imgur.com/vpDnH.png


这个选项对我来说不存在。在 Visual Studio 2010 下,此屏幕上的唯一选项是“将 IIS Express 用于新的基于文件的网站和项目”
我在 VS 2017 Professional 中有这个选项
M
Muhammad Mubashir

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


二这个。我为我的网站创建了一个新的应用程序池,但忘记切换此设置。
这也为我修复了它。我需要更改的唯一另一件事是将管道更改为集成,因为在应用上述修复后这也给了我一个错误。
R
Rami Sarieddine

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

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

在 Visual Studio 级别上,修复是:

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


D
Dan Gøran Lunde

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

https://i.stack.imgur.com/UZYOZ.png


J
Jaco Pretorius

对于为 x86 兼容性而不是任何 CPU 构建的某些项目,这绝对是一个问题。如果我不得不猜测,我会说您的项目之间的一些引用可能是引用某些 bin\debug 文件夹中的 dll,而不是项目引用。

当为 x86 而不是“任何 CPU”编译项目时,dll 进入 bin\x86\debug 文件夹而不是 bin\debug (这可能是您的参考资料正在寻找的地方)。

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


a
asdf_enel_hak

https://i.stack.imgur.com/sMliZ.png


R
Radu

在我的情况下,它通过转到项目属性并在目标框架下工作,我选择了 .NET Framework 4。这是因为我已经移动到一台新机器上,该机器已经安装了其他更高的 .NET 框架,并且项目默认选择了它们。查看适合您的目标框架。