c# - 动态加载程序集并手动强制路径以获取引用的程序集

标签 c# reflection

我正在使用反射在 C# 中加载程序集:

Assembly = Assembly.Load([assembly_bytestream]);

正在加载的程序集引用了另外两个程序集。据我了解,反射将加载主程序集,然后在 GAC 中搜索引用的程序集,如果在那里找不到,您可以合并一个 assemblyResolve 事件:

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
  if (args.Name.IndexOf([refAsm]) > -1)
  {
    Assembly shdocvw = Assembly.LoadFrom([dllPath]);
  }
}

问题是,我不想先查看 GAC 我想强制反射从我定义的特定路径加载引用程序集。关于如何执行此操作的任何想法?

最佳答案

To my understanding reflection will load the main assembly and then search the GAC for the referenced assemblies

正确,但还有一个重要的细节:框架将在查看 GAC 之前查看应用程序域的搜索路径。通常,应用程序域搜索路径仅包含主 EXE 所在的目录,但您也可以通过 app.config 或启动第二个程序,将您的应用程序配置为在特定子目录中查找app 域并以编程方式配置它。

相对于您应用的 EXE,您引用的程序集位于何处?

编辑:我总是指Suzanne Cook's assembly load cheat sheet在调试这样的问题时。她博客的其余部分充满了类似的有用信息。

关于c# - 动态加载程序集并手动强制路径以获取引用的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874277/

相关文章:

c# - 单击按钮激活/停用 javascript

c# - Visual Studios 表单应用程序中的按钮

c# - 递归创建自定义复杂对象

c# - 在运行时更改访问修饰符

java - 在 Scala/Java 中,如何检查方法的定义位置?

c# - OCR与Aforge.net的感知器神经网络回答错误

c# - 应用 MahApps.Metro Dark 主题

c# - 创建类似 .ToString() 的方法

c# - 通过反射调用 Func<int,bool>

go - 在 golang 中,是否可以从类型本身获取 reflect.Type,从名称作为字符串?