【发布时间】:2014-10-30 11:30:54
【问题描述】:
当 JIT 编译器需要为尚未加载的程序集中的类型定义类型,但加载程序无法加载该程序集(例如 FileNotFoundException 或 UnauthorizedAccessException)时,显然使用该类型的方法的 JIT 编译失败。
如果随后在同一个 AppDomain 中再次调用该方法,JIT 编译器/加载器是否应该再次尝试加载程序集?
实验似乎表明 JIT 编译器在加载程序集时只获得了一次机会,每次对同一方法的后续调用都会产生相同的异常,即使导致该异常的原始条件已解决(即文件现在存在,或文件权限已更正)。
是否有关于 JIT 编译器或加载器如何处理此类程序集加载失败的详细内部文档?
【问题讨论】:
-
一枪。一旦组件加载失败,即使它不必失败,它也会在之后持续失败。标准 CLR 规则。不适用于没有上下文的加载 (LoadFile)。