保持COM暴露的组件同步与.NET的引用程序的最佳方法(Best way to keep COM-e

2019-10-19 02:52发布

我有一个C#,COM暴露的.NET程序集,我使用大量作为VB6客户端(办公室VBA)库。 我与它非常高兴。

就在同COM暴露的图书馆是我写,以及一些较新的,.NET客户端对我来说非常有用。 从谷歌搜索的共识是,要做到这一点的唯一方法是引用.NET库本身( 链接1 , 链接2 ),这是我做的事。

当这些.NET应用程序的部署,VS自然希望能够把我的COM .NET程序集他们。 不过,我现在已经漂浮在除它被注册为有问题的机器的COM对象我.NET apps--我的COM组件的几个独立的副本。

这意味着,每一次我做一个bug修复或到我的COM加载项功能的时候,我需要更新这些“浮动”副本为好; 这使得在最好的保养恼人。 我想一旦暴露我需要的功能,为使用它的所有应用程序(不是COM的目的?!)

我尝试使用后期绑定激活COM,希望我能得到周围的problem--但我在两台不同的机器有不同的行为,所以我决定放弃这一想法。

是否有处理这个优雅的方式? 我想也许这将是有意义的注册在安装时GAC的COM组件,但它只是似乎是一个错误的做法,因为它已经被注册为COM(加,好像在GAC注册被认为是不好的做法 ) 。

Answer 1:

我相信,以管理这种情况下最简单的方法是作为一个单独的部署中安装程序集到GAC分发COM组件。 当添加组件参考.NET项目,使该参考确保复制本地属性设置为False。 这告诉.NET编译不包括大会在部署一个副本,这确保了部署.NET应用程序和VB6应用程序都引用相同的版本(一个安装在GAC中,注册与COM服务)



文章来源: Best way to keep COM-exposed assemblies in sync with .NET-referenced assemblies