C# 什么是;“坏IL范围”;例外意味着什么?

C# 什么是;“坏IL范围”;例外意味着什么?,c#,.net,C#,.net,是什么具体导致了消息“坏IL范围”的异常 我从我的一位客户那里收到了一份错误报告,其中包含此消息,但我看不到异常类型。用谷歌搜索这段文字会产生非常不同的结果,我怀疑这在.NET/C#中是相当低级的,在许多不同的情况下都可能发生。在这种情况下,我假设IL是“中间语言” 那么到底是什么导致了这种异常,以及发生这种异常的常见根本原因是什么呢?运行时验证加载的程序集,并特别检查提供的CIL的有效性,它检测CIL结构和CIL流中的各种不同问题 虽然我自己从未见过这个特定的问题,但我想最常见的原因是应用程序

是什么具体导致了消息“坏IL范围”的异常

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


那么到底是什么导致了这种异常,以及发生这种异常的常见根本原因是什么呢?

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

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


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

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


你对此无能为力,如果问题仍然存在,他可能需要重新安装你的应用程序或.NET Framework,如果问题只发生一次,他应该检查病毒或进行认真的硬件测试。

我的问题是一个不可靠的工作目录。因此,其中的某个错误DLL,可能是nuget引用。更新我的所有nuget软件包不起作用,解决方案重建不起作用,电脑重启不起作用

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


我使用的是Win10,因此这里可能有更深层次的问题,但此后几天我没有遇到任何进一步的问题。

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

if (_kishpos != null)
  _kishpos.Dispose();
无需处置程序集对象的in _FormClosing()事件

注释或删除它,以修复“坏IL范围”错误。

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

我的错误已修复。

BadImageFormatException在尝试在x86中运行x64程序集时也会引发,反之亦然。@jgauffin对,引发该异常的原因很多,但它不应报告“错误的IL范围”。呃,那么我不明白您的答案?:)我的意思是,该消息与该异常一起给出(但这一例外并不是这条信息的唯一例外)我想提到一个链接,该链接指向一篇更详细地描述了这条信息的文章。