我使用以下代码在运行时加载dll,并存储它们的类以供以后使用。
public LoadDll(byte[] data)
{
Assembly loadedAssembly = Assembly.Load(data);
System.Type[] types = loadedAssembly.GetTypes();
TypeRepo.Register(types);
}
这很好用,但是如果我构建的dll引用了另一个dll,我会收到错误“模块中的类无法加载”。在调用GetTypes()。
时如何提供特定的文件路径以允许加载的程序集访问磁盘上的依赖项?
答案 0 :(得分:1)
你应该玩AppDomain.AssemblyResolve event
查看链接文档的备注部分指出:
此事件的ResolveEventHandler负责 返回ResolveEventArgs.Name指定的程序集 property,如果无法识别程序集,则返回null。该 必须将程序集加载到执行上下文中;如果它被加载 进入仅反射上下文,导致此事件的负载 提出失败。
因此,您需要执行Assembly.LoadFrom
以通过从代码中定义的任意路径加载附属程序集来返回整个Assembly
实例。