微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

加载的 dll 中的 CreateDomain / AssemblyResolve 与拥有进程不在同一路径中

如何解决加载的 dll 中的 CreateDomain / AssemblyResolve 与拥有进程不在同一路径中

我在 2 个不同的目录中有一个 exe 和 dll

  • Exe - \\Drive\PathA\
  • DLL - \\Drive\PathB\

exe 动态加载 dll 并调用导出的函数。 导出的函数然后尝试创建域

      var setup = new AppDomainSetup
      {
        ApplicationName = "NameOfDll",PrivateBinPathProbe = @"\\Drive\PathB\",ApplicationBase = @"\\Drive\PathB\"
      };

      var domain = AppDomain.CreateDomain(
          "Name",AppDomain.CurrentDomain.Evidence,setup
        );

      domain.AssemblyResolve += OnAssemblyResolve; // <<< -- throws FileNotFoundException

“FileNotFoundException”是针对 dll 本身的!!

如果我将 dll 移动到 \\Drive\PathA\,(exe 的路径),那么它工作正常。

我也试过 AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; 但这也不起作用,(OnAssemblyResolve 从未被调用)。

遗憾的是,我无法移动 dll 或 exe。但我可以控制 exe 和 dll 的代码

那么,我该如何解析这个 dll 的路径,以便我可以创建一个域??

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。