C# ReflectionOnly加载上下文的问题

C# ReflectionOnly加载上下文的问题,c#,.net,reflection,C#,.net,Reflection,我试图通过将某些DLL加载到ReflectionOnly上下文中来加速我的应用程序 此加载发生在次要AppDomain上,后者同时注册AssemblyResolve和AssemblyReflectionOnlyResolve事件处理程序 由于某些原因,加载这些程序集时,此方法的代码失败: Type[] tps = dll.GetTypes(); 这引发了一个异常,表示: 无法解析对程序集系统的依赖关系,版本=2.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934

我试图通过将某些DLL加载到ReflectionOnly上下文中来加速我的应用程序

此加载发生在次要AppDomain上,后者同时注册AssemblyResolve和AssemblyReflectionOnlyResolve事件处理程序

由于某些原因,加载这些程序集时,此方法的代码失败:

Type[] tps = dll.GetTypes();
这引发了一个异常,表示:

无法解析对程序集系统的依赖关系,版本=2.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089',因为它没有 已预加载。使用ReflectionOnly API时,依赖 程序集必须通过预加载或按需加载 反射onlyassemblyresolve事件

当不将程序集加载到仅反射上下文中时,这是假定的

使用仅反射上下文是否有任何问题/注意事项?为什么运行时不能在GAC中找到这个程序集并像往常一样加载它?我遗漏了什么吗?

来自MSDN:“依赖项不会自动加载到仅反射上下文中”。所以 在AppDomain.ReflectionOnlyResolve事件处理程序中,必须通过Assembly.ReflectionOnlyLoad()加载“System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”。您应该从ResolveEventArgs的name属性中获取依赖的程序集名称,如下所示

 public static Assembly My_AssemblyResolve(object sender, ResolveEventArgs args) 
 {
      string missedAssemblyFullName = args.Name;
      Assembly assembly = Assembly.ReflectionOnlyLoad(missedAssemblyFullName); 
      return assembly
 }

注意:ReflectionOnlyLoad()仅加载GAC中的程序集。您可以使用ReflectionOnlyLoadFrom直接加载dll。

我也设置了这个事件处理程序,正如我在原始问题中所写的那样。