【发布时间】:2010-11-23 06:45:41
【问题描述】:
我正在开发一个简单的类浏览器对话框,它允许用户打开程序集并从其中选择一个静态方法。但是,在某些情况下,程序集的依赖项会丢失。
由于我只需要方法名而不需要它的完整原型,有没有办法克服调用Assembly.ReflectionOnlyLoadFrom 时引发的 FileNotFoundException?我目前正在处理 AppDomain.ReflectionOnlyAssemblyResolve 但如果我返回 null 然后我会收到带有以下消息的 FileLoadException:
无法解析对程序集“...”的依赖,因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。
我知道这一定是可能的,因为.NET Reflector 允许您跳过未解决的依赖项。但是,我开始认为 Reflector 可能会手动解析程序集,而不是将其加载到 CLR 中并使用标准反射。也许它使用了 Mono 项目中的 Cecil 之类的东西。
【问题讨论】:
-
我怀疑 Reflector 使用了 Cecil - 它早于它,并且来自 MS。我也怀疑它使用 CCI。 Methinks Lutz 只是一个上帝,他会把所有的东西都卷进去就是睡觉(即使他最后还是累了!)
标签: c# .net reflection assemblies clr