背景信息:
我在远程服务器上有两个COM +组件,基于.NET程序集,其中一个调用另一个,后者又调用私有程序集。
我的电话链看起来像这样;
客户端计算机:
测试线束 - >通过Activator.CreateInstance(...)初始化COM +组件“ TestFirst ”,它通过COM +应用程序代理进行路由,然后调用实例上的方法。
远程服务器:
TestFirst - >来自客户端的方法调用初始化COM +组件“ TestSecond ”到“new”关键字使用,然后调用实例上的方法。
TestSecond - >在私有程序集中包含的类上调用方法; “的 TestThird ”
问题:
为了成功调用 TestSecond ,似乎我必须将程序集安装到GAC。否则,我收到此错误;
无法加载类型'TestSecond.TestSecond,TestSecond,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = ...'。
好的,我将TestSecond.dll添加到GAC然后......
无法加载文件或程序集“TestThird,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = ...”或其中一个依赖项。系统找不到指定的文件。
这里显而易见的答案是将TestThird添加到GAC,这确实有效,但我不想走这条路。这只是一个概念证明,遵循这个结构的实际项目有许多私有程序集引用,我想避免将它们全部添加到GAC中,这样这些COM +组件就可以看到它们。
还有其他选择吗?是否有某种方法可以将工作目录与GAC注册的程序集相关联?
注意:这个问题与我在本周提出的另一个问题相关,但我特别关注GAC安装程序集的依赖性解析。
COM+ component calling other COM+ components - "Cannot load type"
答案 0 :(得分:3)