【问题标题】:C# Assembly.Load with reference dllsC# Assembly.Load 引用 dll
【发布时间】:2015-09-29 19:05:43
【问题描述】:

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

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

这很好用,但是如果我构建的 dll 引用了另一个 dll,我会收到错误“无法加载模块中的类”。调用 GetTypes() 时。

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

【问题讨论】:

    标签: c# dll .net-assembly


    【解决方案1】:

    你应该和AppDomain.AssemblyResolve event一起玩

    查看链接文档的备注部分指出了什么:

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-18
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多