是什么具体导致了消息“Bad IL range”的异常?
我从我的一位客户那里收到了包含此消息的错误报告,但我看不到异常类型。在此文本上进行谷歌搜索会产生非常不同的结果,我怀疑这是 .NET/C# 中相当低的级别,可能会在许多不同的情况下发生。我假设 IL 在这种情况下是“中间语言”。
那么究竟是什么导致了这个异常,它发生的常见潜在原因是什么?
异常类型为BadImageFormatException
,当程序集损坏时抛出(完整的异常消息应说明哪个程序集)。发生这种情况的原因可能多种多样:病毒、硬件故障、软件错误或用户采取的错误操作。异常消息和 Fusion 日志属性将包含有关它所代表的错误类型的更多信息。
您对此无能为力,如果问题仍然存在,他可能需要重新安装您的应用程序或 .NET Framework,如果它确实发生过一次,那么他应该检查病毒或进行严格的硬件测试。
运行时验证加载的程序集,特别是 - 检查提供的 CIL 的有效性 - 它检测 CIL 结构和 CIL 流中的各种不同问题。
虽然我自己从未见过这个特定问题,但我想最常见的原因是应用程序或 .NET 程序集之一的物理损坏。
我会尝试重新安装您的应用程序(和/或 .NET 运行时)。
我的问题是一个狡猾的工作目录。所以其中某处有一个坏的DLL,也许是一个nuget引用。更新我所有的 nuget 包都不起作用,解决方案重建不起作用,电脑重启不起作用。
从我的源代码管理 (svn) 重新签出到新的工作目录解决了这个问题。
我在 Win10 上,所以这里可能有更深层次的东西,但从那以后几天我没有任何进一步的问题。
在我的情况下,由于在 _FormClosing 事件中处理程序集对象而发生此错误,如下所示:
if (_kishpos != null)
_kishpos.Dispose();
无需在 _FormClosing() 事件中处理程序集对象。
评论或删除它,以修复您的“Bad IL range”错误。
//if (_kishpos != null)
// _kishpos.Dispose();
我的错误已修复。