繁体   English   中英

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

[英]Could not load file or assembly 'xxx' or one of its dependencies. An attempt was made to load a program with an incorrect format

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

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

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

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

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

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

我在尝试使用可怕的Business Objects 4 for .Net SDK 时遇到了这个错误。

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

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

在此处输入图片说明

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

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

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

在 Visual Studio 级别,修复是:

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

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

在此处输入图片说明

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

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

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

如果在 Visual Studio 中使用 IIS express 工作并且发布失败,请尝试以下操作: 在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM