如果将程序集添加到GAC,那么它所引用的所有程序集是否也需要添加到那里?

时间:2010-11-09 17:13:56

标签: .net gac com+

背景信息:

我在远程服务器上有两个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"

1 个答案:

答案 0 :(得分:3)

您可以从您选择的任何安装路径中使程序集加载其依赖程序集:

http://www.chilkatsoft.com/p/p_502.asp

(与该公司无关,他们的例子似乎相当清楚。)