什么特别导致异常消息“Bad IL range”?
我收到了来自我的客户的错误报告,但是我看不到异常类型。谷歌搜索这个文本产生了非常不同的结果,我怀疑这是.NET / C#中的一个非常低级别的东西,可以在许多不同的情况下发生。我认为在这种情况下IL是“中间语言”。
那究竟是什么导致了这个异常,以及它发生的常见根本原因是什么呢?
答案 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();
我的错误已修复。