一个客户想要从VB6中使用我们的.NET DLLs进行消费。它们被设计为支持反向互操作,一切都很正常…除了:在两个不同的目录中有两个单独的VB6程序。似乎需要执行以下操作之一才行:
第一个困惑点:
据我了解,COM运行时使用Prog ID / Class ID来定位DLL。当我在注册表中查看Class ID条目时,我会看到CodeBase键中.NET DLL的完整路径。为什么使用Prog ID / Class ID的COM程序无法使用CodeBase定位.NET DLL?
第二个困惑点:
GAC是特定于.NET的。它如何参与解析COM引用?
- 将.NET DLL复制到两个目录中,或者
- 将.NET DLL安装在GAC中
我对此有些困惑。使用Regasm.exe注册程序集后,您可以将其安装在全局程序集缓存中,以便从任何COM客户端激活它。如果该程序集仅由单个应用程序激活,则可以将其放在该应用程序的目录中。
第一个困惑点:
据我了解,COM运行时使用Prog ID / Class ID来定位DLL。当我在注册表中查看Class ID条目时,我会看到CodeBase键中.NET DLL的完整路径。为什么使用Prog ID / Class ID的COM程序无法使用CodeBase定位.NET DLL?
第二个困惑点:
GAC是特定于.NET的。它如何参与解析COM引用?