2015-09-29 54 views
0

我使用下面的代码在运行时加载dll,并存储它们的类以供将来使用。C#Assembly.Load引用dll

public LoadDll(byte[] data) 
{ 
    Assembly loadedAssembly = Assembly.Load(data); 
    System.Type[] types = loadedAssembly.GetTypes(); 
    TypeRepo.Register(types); 
} 

来完成这项工程,但如果我建造的DLL有引用到其他DLL我得到的错误“模块中的类不能被加载。”当调用GetTypes()时。

如何提供特定的文件路径以允许加载的程序集访问磁盘上的依赖项?

回答

1

你应该AppDomain.AssemblyResolve event

看到什么言论链接文档部分指出玩法:

这是ResolveEventHandler此事件的责任 返回指定大会通过ResolveEventArgs.Name 属性,或者如果程序集未被识别则返回null。必须将 程序集加载到执行上下文中;如果将 加载到仅反射上下文中,则导致此事件的负载升至 将失败。

所以,你需要执行Assembly.LoadFrom通过从你的代码中定义的任意路径装载卫星组件返回整个Assembly实例。