0

我有一个通过 ComVisible 向 COM 公开接口和类的程序集。此类由 VB6 应用程序使用。

现在,由于一些重组,我希望这个类由不同的程序集提供。只要我保留 Guid 和 ProgID,我可以将代码移动到这个新程序集,注册它,并让 VB6 应用程序找到类而无需重新编译它吗?

4

2 回答 2

2

只要我保留 Guid 和 ProgID

小心,有Guids,复数。至少有一个用于接口类型,IID,一个用于实现接口的类,CLSID。如果您支持事件或在程序集中有多个接口或类,则附加一些。如果您还注册了类型库(Regasm.exe /tlb 选项),那么您还有一个用于类型库 TLBID 的程序集本身的 guid。

弄错其中任何一个,或依赖 .NET 自动生成它们,替换将不起作用。

确保替换相同的最佳方法是反编译类型库并比较它们的身份。如果您还没有 Tlbexp.exe,请从 Visual Studio 命令提示符中首先生成类型库。然后运行Oleview.exe,File + View Typelib得到类型库的内容,反编译成IDL。将右窗格内容复制/粘贴到文本文件中。重复替换 DLL 并进行比较。不要担心评论的差异。

于 2013-02-11T20:43:39.653 回答
1

是的,我不明白为什么不...只要确保旧程序集正确注销即可。

于 2013-02-11T19:44:27.997 回答