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

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


当前回答

我也有同样的问题。项目B在我的案例中是一个。net核心类库,它有一个Nuget“Microsoft.Management”。安装基础设施”。错误在于我把我的B项目叫做MI。我将项目名称改为其他名称,突然之间一切都恢复正常了。

其他回答

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

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

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

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

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

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

Chilkat . net 4.5程序集要求在应用程序运行的任何计算机上安装vc++ 2012或2013运行时。大多数电脑都已经安装了它。您的开发计算机将拥有它,因为已经安装了Visual Studio。但是,如果部署到所需的vc++运行时不可用的计算机上,则会出现上述错误:

安装所有的波纹包

vcredist_x64 for Visual Studio 2013

vcredist_x86 for Visual Studio 2013

Visual Studio 2012的vcredist_x64

Visual Studio 2012 vcredist_x86的Visual c++可重分发包

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

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

截图:

您正在尝试从cmd运行您的.exe文件吗?这是我的错。只需双击运行.exe文件。如果是Windows 8.1/Windows Server 2012 R2 x64的。net Core SCD。

我也有同样的问题。我已经将项目A的“平台目标”(“项目A”(右键单击)->属性->构建->“平台目标”)设置为x86,但保持项目B的“任何CPU”。将项目B设置为“x86”修复了这个问题。