1

我有一个多年来一直在开发的 .NET 应用程序(大约 15 个项目,其中一些非常大),并且在尝试启动它时遇到了以下异常。

System.BadImageFormatException 未处理消息:无法加载文件或程序集“System.Runtime.Remoting,版本=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。试图加载格式不正确的程序。

似乎没有任何调用堆栈 - 这发生在启动我的代码之前,所以我什至无法介入。我在一些项目中使用了这个 DLL,但我现在已经完成并完全删除了对它的所有引用,但我仍然收到错误消息。这只发生在这个项目中(我可以在解决方案中启动其他项目,也可以从其他解决方案中启动其他项目)。

编辑

经过大量的摆弄,在我的项目下的应用程序选项卡中禁用应用程序框架似乎允许它启动,但我不知道为什么。我确实想在使用其中一些功能时重新启用它。

编辑 2 经过更多的混乱,我认为这是由应用程序框架使用远程处理来强制它是一个单实例应用程序引起的。但是,.NET 反射器似乎表明,如果我取消选中单实例选项,则实际上不应该运行它,但即使我这样做了,我仍然遇到问题。也就是说,它仍然属于使用该程序集(Microsoft.VisualBasic.ApplicationServices.ApplicationBase.Run)中的类型的方法的范围,所以我认为这就是导致它尝试解析该程序集的原因。虽然这一切都很有趣,但它并没有真正给出我为什么会得到这个例外的任何答案。我尝试用一​​个空项目复制它并且效果很好 - 两者都设置在相同的应用程序框架设置上,都在 .NET 4.0 上,都是 x86。我'

4

1 回答 1

0

当您更改 .csproj 的目标框架并将其恢复为您开始使用的框架时,通常会发生这种情况。

在 app.config 的启动标签下确保 1 if supportedRuntime version="a different runtime from cs project target"。

确保 2 这也意味着检查可能是属性文件夹中的其他自动生成或其他文件,以查看这些文件与 .csproj 文件中定义的文件之间是否没有更多的运行时不匹配。

在您开始尝试使用项目属性进行不同的操作以克服错误之前,这些可能会为您节省大量时间。

于 2013-04-11T10:30:43.113 回答