我使用以下代码在运行时加载dll,并存储它们的类供以后使用。
public LoadDll(byte[] data)
{
Assembly loadedAssembly = Assembly.Load(data);
System.Type[] types = loadedAssembly.GetTypes();
TypeRepo.Register(types);
}
这很好,但是如果我构建的dll引用了另一个dll,我就会得到错误“模块中的类无法加载”。调用GetTypes()时。
如何提供特定的文件路径以允许加载的程序集访问磁盘上的依赖项?
发布于 2015-09-29 19:13:29
你应该和AppDomain.AssemblyResolve事件一起玩
见链接文件中的备注部分指出了什么:
ResolveEventHandler对此事件的责任是返回由ResolveEventArgs.Name属性指定的程序集,或者在程序集不被识别时返回null。程序集必须加载到执行上下文中;如果将其加载到仅反射上下文中,则导致引发此事件的加载失败。
因此,您需要执行一个Assembly.LoadFrom
,通过从代码中定义的任意路径加载附属程序集来返回整个Assembly
实例。
https://stackoverflow.com/questions/32851900
复制相似问题