【发布时间】:2025-12-26 16:05:06
【问题描述】:
我有一个 C#、COM 公开的 .NET 程序集,我大量使用它作为 VB6 客户端 (Office VBA) 的库。我对此非常满意。
在我编写的一些较新的 .NET 客户端中,同样的 COM 公开库对我很有用。谷歌上的共识是,这样做的唯一方法是引用 .NET 库本身(link 1、link 2),我已经这样做了。
部署这些 .NET 应用程序时,VS 自然希望将我的 COM .NET 程序集带上它们。但我现在有几个独立的 COM 程序集副本随 .NET 应用程序一起浮动——除了它在相关机器上注册为 COM 对象。
这意味着每次我对我的 COM 进行错误修复或添加功能时,我都需要更新这些“浮动”副本;这使维护充其量是烦人的。我想为所有使用它的应用程序公开我需要的功能一次(这不是 COM 的目的吗?!)
我尝试使用后期绑定来激活 COM,希望能解决这个问题——但我在两台不同的机器上遇到了不同的行为,所以我决定放弃这个想法。
有没有优雅的方法来处理这个问题?我认为在安装时在 GAC 中注册 COM 程序集可能是有意义的,但这似乎是错误的做法,因为它已经注册为 COM(另外,在 GAC 中注册似乎是not considered good practice)。
【问题讨论】:
标签: c# .net com com-interop