c#组装.使用参考dll加载

本文关键字:dll 加载 参考 组装 | 更新日期: 2023-09-27 18:15:14

我使用以下代码在运行时加载dll,并存储它们的类以供以后使用。

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

,这工作得很好,但如果我建立的dll引用了另一个dll,我得到错误"在模块中的类不能被加载。"当调用GetTypes()。

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

c#组装.使用参考dll加载

你应该试试AppDomain。AssemblyResolve事件

请参阅链接文档注释部分所指出的内容:

这个事件是ResolveEventHandler的责任返回由ResolveEventArgs指定的程序集。名字属性,或者在无法识别程序集时返回null。的程序集必须加载到执行上下文中;如果它已加载在仅反射上下文中,导致此事件的负载为

因此,您需要执行Assembly.LoadFrom,通过从代码中定义的任意路径加载卫星程序集来返回整个Assembly实例。