【问题标题】:Loading the same named library from different folder从不同的文件夹加载相同的命名库
【发布时间】:2014-05-29 07:50:20
【问题描述】:

我有 C# .Net 4.0 COM 可互操作库,它使用相同的通用帮助库...

例如: .Net COM 互操作库 1(比如库名称:netCom1.dll) .Net COM 互操作库 2(比如库名称:netCom2.dll) 两者都引用相同的(公共库)lib1.dll、lib2.dll 和 lib3.dll。

他们的输出目录是 .Net COM 互操作库 1 /bin => netCom1.dll、lib1.dll、lib2.dll 和 lib3.dll。 .Net COM 互操作库 2 /bin => netCom2.dll、lib1.dll、lib2.dll 和 lib3.dll

现在,这些 COM 互操作库在单帧进程中运行。 (框架.exe)。 但我观察到的是,即使公共库 lib1.dll、lib2.dll 和 lib3.dll 位于 netCom1.dll 和 netCom2.dll 的不同文件夹中,当它运行框架时,exe 时,这些公共库只加载一次,即netCom1.dll 和 netCom2.dll 的静态变量是一样的。

有什么方法可以让 netCom1.dll 引用其文件夹的 lib1.dll、lib2.dll 和 lib3.dll 和 netCom2.dll 来引用其文件夹的 lib1.dll、lib2.dll 和 lib3.dll com 可操作库在单帧进程中加载​​。

【问题讨论】:

  • 这些 libX.dll 库的本质是什么 - 它们是 .NET 程序集、COM DLL 还是普通的 Windows DLL?
  • 常用库(libX.dll)是简单的.Net 4.0 dll。

标签: c# dll com


【解决方案1】:

为此,您需要在进程中创建多个 AppDomain,并在其自己的 AppDomain 中运行每个代码。

【讨论】:

  • 除了创建 AppDomain 之外还有什么办法吗?此外,我对这个过程没有任何控制权,因为它是框架,我们都只通过 COM 接口相互交谈..
猜你喜欢
  • 1970-01-01
  • 2020-07-17
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
相关资源
最近更新 更多