出现不可恢复IL错误,但IL代码看似正常,求排查原因
IL编译错误:
stloc.4/ldloc.4指令非法的原因及修复 - 问题根源:IL指令集明确规定,
stloc.N和ldloc.N这类短格式指令仅支持局部变量索引0-3,当索引≥4时,不能使用这种.N的写法。 - 正确写法:索引为4时,需要换成
stloc.s 4(单字节指令,适用于索引4-255的局部变量)或者stloc 4(双字节指令,支持更大索引);同理ldloc.4要改成ldloc.s 4或ldloc 4。 - 环境说明:MacOS上的
ilasm编译器和Rider的语法校验都严格遵循IL规范,因此都会对非法的.4写法抛出错误。
内容的提问来源于stack exchange,提问作者Andrew Matthews
相关产品推荐
相关产品推荐

