“坏IL范围”例外是什么意思?

时间:2012-11-16 12:03:16

标签: c# .net

什么特别导致异常消息“Bad IL range”?

我收到了来自我的客户的错误报告,但是我看不到异常类型。谷歌搜索这个文本产生了非常不同的结果,我怀疑这是.NET / C#中的一个非常低级别的东西,可以在许多不同的情况下发生。我认为在这种情况下IL是“中间语言”。

那究竟是什么导致了这个异常,以及它发生的常见根本原因是什么呢?

4 个答案:

答案 0 :(得分:9)

异常类型是BadImageFormatException,当程序集损坏时抛出它(完整的异常消息应该解释哪个程序集)。这可能有很多种原因:病毒,硬件故障,软件错误或用户采取的错误操作。异常消息和Fusion日志属性将包含有关它所代表的错误类型的更多信息。

你不能做太多,如果问题仍然存在,可能他需要重新安装你的应用程序或.NET Framework,如果它只发生一次,那么他应该检查病毒或进行严格的硬件测试。

答案 1 :(得分:6)

运行时验证加载的程序集,特别是 - 检查所提供的CIL的有效性 - 它检测CIL结构和CIL流中的各种不同问题。

虽然我自己从未见过这个特定问题,但我想最常见的原因是应用程序或.NET程序集之一的物理损坏。

我会尝试重新安装您的应用程序(和/或.NET运行时)。

答案 2 :(得分:2)

我的问题是一个狡猾的工作目录。所以一个坏的DLL在那里,也许是一个nuget引用。更新我的所有nuget包都没有用,解决方案重建没有用,电脑重启没有用。

从我的源代码管理(svn)进行新的结帐到新的工作目录解决了这个问题。

我在Win10上,所以可能会有更深层次的东西,但是从那以后几天我就没有任何进一步的问题。

答案 3 :(得分:1)

在我的情况下发生此错误是因为在_FormClosing 的情况下处理程序集对象,如下所示:

if (_kishpos != null)
  _kishpos.Dispose();

无需在_FormClosing()事件中处理汇编对象。

评论或删除它,以修复您的"错误的IL范围"错误。

//if (_kishpos != null)
//  _kishpos.Dispose();

我的错误已修复。