我有两个项目,项目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.

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


当前回答

我刚刚在Visual Studio 2015中运行IIS Express时遇到了这个错误消息。在我的情况下,我需要运行64位版本的IIS Express:

工具→选项→项目和解决方案→Web项目 勾选方框 上面写着“使用64位版本的IIS Express网站和 项目”。

截图:

其他回答

我非常确定您遇到了32位/ 64位冲突。听起来好像您的主项目可能被设置为32位,而其引用的类被设置为64位。试着看看这个SO问题和这个问题。在这两者之间,你应该能够解决你的问题。

我在Visual Studio 2015中运行单元测试(xunit)时遇到了这个问题,并遇到了以下修复:

Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64

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

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

如果你像我一样通过cli .net集成从你的程序中使用LibreOffice,我也会得到同样的错误。我在PC上的生产环境中使用了旧版本的LibreOffice,我安装了一个冲突的新版本。卸载LibreOffice即可。我在这里找到了解决方案。net CLI:无法加载文件或程序集“cli_cppuhelper”

我也有这个问题。如前所述,该问题与32位/ 64位冲突有关,但与托管在Azure中的站点有关。要在Azure应用程序服务中更改平台,请转到配置->常规设置。