在ReflectionOnlyLoad期间忽略缺少的依赖项

Nat*_*lch 17 .net c# reflection clr assemblies

我正在开发一个简单的类浏览器对话框,允许用户打开一个程序集并从内部选择一个静态方法.但是,在某些情况下会缺少程序集的依赖项.

因为我只需要方法名而不是它的完整原型,有没有办法通过调用Assembly.ReflectionOnlyLoadFrom时引发的FileNotFoundException ?我目前正在处理AppDomain.ReflectionOnlyAssemblyResolve但是如果我返回null,那么我得到一个FileLoadException并带有以下消息:

无法解析对程序集"..."的依赖性,因为它尚未预加载.使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关的程序集.

我知道这一定是可能的,因为.NET Reflector允许您跳过未解析的依赖项.但是我开始认为,Reflector可能会手动解析程序集,而不是将其加载到CLR中并使用标准反射.也许它使用Mono项目中的Cecil之类的东西.

Rub*_*ink 3

如果您要对程序集进行重要的工作,我会尝试Cecil 。还有MS CCI。(我不能 100% 确定这些工具中的任何一个都可以在缺少位的情况下工作,但它们肯定是这个领域的好工具,如果它们没有,我会感到惊讶)

如果您确实需要深入了解,那么您无法击败这个Asmex 教程和示例,它肯定可以工作或让您解决它。