我在位置A中运行的.Net客户端中使用激活上下文API,以便在位置B(与A完全不同的位置,而不是同一台机器上的兄弟/后代等)上加载无组件的COM组件)在WS2008上传入ACTCTX中的位置B并且工作正常。
但是,我现在需要对另一个COM dll做同样的事情,而另一个COM dll又依赖于生活在完全不同位置的几个.Net COM程序集。
我已将依赖的.Net程序集添加到清单中,并将清单和COM dll放在位置B中,但我必须将依赖的.Net程序集放在位置A(客户端运行的位置)才能使其工作。实际上,它们将位于完全不同的目录中,位于位置A和位置B.
我正在尝试做什么,即是否可以使用激活上下文api在不同的不相关目录中加载多个COM组件?
答案 0 :(得分:4)
.NET查看活动和进程激活上下文,以发现无本地元数据(<clrClass>
等),就像本机COM一样。但是,与本机COM不同,它不使用激活上下文中包含的信息来确定实际文件的位置。在那里,我认为它只关注GAC,其次是客户端EXE旁边的文件位置。您可以使用Sysinternals Procmon确认这一点。我想你可以尝试汉斯建议的解决方法,或者手动将所需的组件预装到你的过程中,看看是否有效;我没有尝试这个,因为在我的场景中,客户端exe是一个我无法控制的本机exe。