我使用以下代码在运行时加载dll,并存储它们的类以供以后使用。
public LoadDll(byte[] data)
{
Assembly loadedAssembly = Assembly.Load(data);
System.Type[] types = loadedAssembly.GetTypes();
TypeRepo.Register(types);
}
,这工作得很好,但如果我建立的dll引用了另一个dll,我得到错误"在模块中的类不能被加载。"当调用GetTypes()。
如何提供特定的文件路径以允许加载的程序集访问磁盘上的依赖项?
你应该试试AppDomain。AssemblyResolve事件
请参阅链接文档注释部分所指出的内容:
这个事件是ResolveEventHandler的责任返回由ResolveEventArgs指定的程序集。名字属性,或者在无法识别程序集时返回null。的程序集必须加载到执行上下文中;如果它已加载在仅反射上下文中,导致此事件的负载为
因此,您需要执行Assembly.LoadFrom
,通过从代码中定义的任意路径加载卫星程序集来返回整个Assembly
实例。