7

是什么具体导致了消息“Bad IL range”的异常?

我从我的一位客户那里收到了包含此消息的错误报告,但我看不到异常类型。在此文本上进行谷歌搜索会产生非常不同的结果,我怀疑这是 .NET/C# 中相当低的级别,可能会在许多不同的情况下发生。我假设 IL 在这种情况下是“中间语言”。

那么究竟是什么导致了这个异常,它发生的常见潜在原因是什么?

4

4 回答 4

11

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

您对此无能为力,如果问题仍然存在,他可能需要重新安装您的应用程序或 .NET Framework,如果它确实发生过一次,那么他应该检查病毒或进行严格的硬件测试。

于 2012-11-16T12:10:02.117 回答
6

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

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

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

于 2012-11-16T12:09:01.527 回答
3

我的问题是一个狡猾的工作目录。所以其中某处有一个坏的DLL,也许是一个nuget引用。更新我所有的 nuget 包都不起作用,解决方案重建不起作用,电脑重启不起作用。

从我的源代码管理 (svn) 重新签出到新的工作目录解决了这个问题。

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

于 2015-10-09T02:05:03.217 回答
2

在我的情况下,由于在 _FormClosing 事件中处理程序集对象而发生此错误,如下所示:

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

无需在 _FormClosing() 事件中处理程序集对象。

评论或删除它,以修复您的“Bad IL range”错误。

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

我的错误已修复。

于 2018-03-27T10:17:05.777 回答