在不同位置使用具有多个dll的Activation Context API

问题描述

| 我在运行于位置A的.Net客户端中使用激活上下文API,以在WS2008上的位置B(与A完全不同的位置,而不是同一台机器上的同级/后代等)中加载无注册限制的COM组件。通过传入ACTCTX中的位置B,它可以正常工作。 但是,我现在需要对另一个COM dll做同样的事情,而该DLL又依赖于生活在完全不同位置的几个.Net COM程序集。 我已将相关的.Net程序集添加到清单中,并将清单和COM dll放置在位置B中,但是我必须将相关的.Net程序集放置在位置A(客户端运行的位置)中,以使其正常工作。实际上,它们将位于与位置A和位置B完全不同的目录中。 我正在尝试做些什么,即是否可以使用激活上下文api将多个COM组件加载到不同的不相关目录中?     

解决方法

        .NET像本地COM一样,查看活动和进程激活上下文以发现无注册元数据(
<clrClass>
等)。但是,与本机COM不同,它不使用激活上下文中包含的信息来确定实际文件的位置。在那里,我相信它只会查看GAC,然后仅是客户端EXE旁边的文件位置。您可能可以使用Sysinternals Procmon进行确认。我想您可以尝试Hans建议的解决方法,或将所需的程序集手动预加载到您的过程中,看看是否可行;我没有尝试一下,因为在我的场景中,客户端exe是我无法控制的本机exe。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...