il.Emit(OpCodes.Callvirt, _compactBinaryReader_ReadObject);调用此函数,并在特殊情况下提供返回值'null‘。
如果该值为null,则必须决定是否跳转到标签
在方法调用后使用
il.Emit(OpCodes.Dup);
il.Emit(OpCodes.Brfalse_S, DECISION);给了我一个异常"JIT编译器遇到了内部限制“。但是,当我调用该函数时,代码构建正确。
我也试过OpCodes.Brfalse。
我做错了什么?
发布于 2011-07-30 21:05:50
找到解决上述问题的reasonS,
应该理解的一件事是,当抛出“CLR:运行时代码生成的验证”异常时,它意味着编写的代码格式不正确,当汇编程序评估它时,它不接受编写的代码,问题通常是因为堆栈具有额外的值或更少的值。
"JIT编译器遇到内部限制。“当它在运行时需要其他东西时抛出,我们在值中提供其他东西,或者当堆栈有其他东西而需要其他东西时抛出。
简而言之,后一个异常在运行时抛出,另一个异常在不满足预运行条件时抛出。
https://stackoverflow.com/questions/6798765
复制相似问题