.net “错误IL范围”异常是什么意思?

rm5edbpk  于 2023-01-27  发布在  .NET
关注(0)|答案(6)|浏览(458)

具体是什么原因导致消息为“Bad IL range”的异常?
我从我的一个客户那里得到了一个错误报告,其中包含了这条消息,但是我看不到异常类型。在谷歌上搜索这段文本会产生非常不同的结果,我怀疑这在.NET/C#中是非常低级的,在许多不同的情况下都会发生。我假设IL是这里的“中间语言”。
那么,究竟是什么导致了这种异常,以及发生这种异常的常见潜在原因是什么呢?

tyky79it

tyky79it1#

异常类型是BadImageFormatException,当程序集损坏时抛出(完整的异常消息应该解释是哪个程序集)。可能有很多不同的原因导致这种情况:病毒、硬件故障、软件错误或用户执行的错误操作。异常消息和Fusion日志属性将包含有关其所代表的错误类型的详细信息。
你不能做太多,如果问题仍然存在,他可能需要重新安装您的应用程序或.NET框架,如果它确实发生了一次,那么他应该检查病毒或做一个严重的硬件测试。

shstlldc

shstlldc2#

运行库验证加载的程序集,特别是检查提供的CIL的有效性,它检测CIL结构和CIL流中的各种不同问题。
虽然我自己从未见过这个特定的问题,但我猜最常见的原因是应用程序或.NET程序集的物理损坏。
我会尝试重新安装您的应用程序(和/或.NET运行时)。

g2ieeal7

g2ieeal73#

我的问题是一个不可靠的工作目录。所以一个坏的DLL在那里的某个地方,也许是一个nuget引用。更新我所有的nuget包没有工作,解决方案重建没有工作,电脑重启没有工作。
从我的源代码管理(svn) checkout 到一个新的工作目录解决了这个问题。
我在Win10上,所以这里可能有更深层次的东西,但我已经几天没有任何进一步的问题了。

hgncfbus

hgncfbus4#

在我的例子中,我在dotnet run运行时执行了一个数据库迁移,我不得不终止这个进程并重新启动它,这样就解决了这个问题。

wz1wpwve

wz1wpwve5#

在我的例子中,这个错误是由于在_FormClosing事件中释放了一个程序集对象,如下所示:

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

不需要释放程序集对象的in _FormClosing()事件。

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

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

我的错误修正了。

8cdiaqws

8cdiaqws6#

删除/bin/obj文件夹(对我来说是blazor服务器,vscode,dotnet 7).然后再次运行dotnet run.

相关问题