我有两个项目,项目a和项目b。projecb是一个控制台应用程序,它依赖于ProjectA。昨天,一切都很好,但今天突然当我运行ProjectB时,我得到了这个:

BadImageFormatException未处理: 无法加载文件或程序集“ProjectA, Version=1.0.0.0, Culture=中性,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。

两者都只是常规项目,不依赖于任何其他非。网络项目。两者都是完全的。net -没有本机代码,也没有P/Invoke。我有其他项目依赖于ProjectA,仍然工作得很好。

我尝试过的事情:

Make sure both projects are set to "Any CPU," with the build checkbox checked. They are. Make sure both projects are for the same Target Framework (.Net 4.0 Client Profile). Under ProjectB --> References --> ProjectA --> Properties, make sure "Copy Local" is set to "True" _ (I verified that ProjectA.dll is being copied correctly) Clean/Rebuild the solution. I even tried manually deleting the /bin and /obj folders in both projects. Restart Visual Studio. Restart my computer. Check out an entirely new copy of the repository.

但还是得到相同的错误。我不知道我做了什么导致了这一切,也不知道该怎么补救。什么好主意吗?


当前回答

在我的案例中,将IIS Express Bitness从“默认”更改为“x86”有帮助。

我所有的项目都以“x86”作为平台目标。

其他回答

对于visual studio的新版本(本答案为v16.10),可以通过手动更改解决方案平台来修复该问题。对我来说,从“任何CPU”改为“x86”后,它就工作了。

点击解决方案平台下拉菜单,其中任何CPU出现在下面的图像。 进入配置管理器。 单击new并根据您的工作情况添加平台x86或x64(32或64位)。 重新启动项目。

我也遇到过同样的问题。它突然出现了,这对我来说很奇怪。

在异常快照中,对于FusionLog,我看到它的消息如下:

…C:\Windows\Microsoft.净\ Framework64…

关于融合日志的更多信息:http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx

所有项目都有一个目标CPU为AnyCPU。我将应用程序项目(引用所有其他项目的项目)更改为x86的目标CPU。现在起作用了。

不知道目标CPU是如何混淆的,没有明显的原因,但它确实发生了。

在我的案例中,将IIS Express Bitness从“默认”更改为“x86”有帮助。

我所有的项目都以“x86”作为平台目标。

在我的例子中,抛出这个异常的dll中缺少一个依赖项。我检查了依赖步行者,添加了丢失的dll,问题解决了。

更具体地说,我不小心将SVN关键字添加到opencv_core340.dll中,从而损坏了我的opencv_core340.dll,因此我的dll不能再使用它。然而,我不相信这个问题的解决方案取决于dll是否损坏或丢失。我添加这个只是为了给出完整的信息。

下面的方法为我解决了这个问题,取消选中“Prefer” 32位”: