【问题标题】:BadImageFormatException on startup with Application Framework enabled启用应用程序框架时启动时出现 BadImageFormatException
【发布时间】:2013-04-05 12:23:36
【问题描述】:

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

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

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

编辑

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

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

【问题讨论】:

  • 32 / 64 问题通常 - 例如第一个链接stackoverflow.com/questions/2728560/…
  • 也许,但如果我什至没有引用它,那我该如何解决!?
  • 你有一些依赖于它的东西——很难说——它可能意味着“任何东西”:)
  • 有什么想法可以追踪它吗?
  • 尝试依赖walker - 或实现AppDomain.CurrentDomain.AssemblyResolve - 例如我昨天发布的类似内容(仅查看事件部分)-stackoverflow.com/a/15824128/417747-或其他一些实用程序来跟踪您实际加载的内容

标签: .net vb.net badimageformatexception


【解决方案1】:

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

如果支持,请确保 1 运行时版本=“与 cs 项目目标不同的运行时”在 app.config 中的启动标记下。

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

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

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2015-05-11
    • 1970-01-01
    • 2013-04-07
    • 2019-04-16
    • 2021-12-28
    • 1970-01-01
    • 2018-12-18
    • 2015-03-14
    相关资源
    最近更新 更多