这一点 VB 做的极差!
在 VB 中,所谓的“二进制兼容”是指保持生成的 COM 对象的 CLASSID 不变,它需要必须编译一遍,以后设置为二进制兼容。一旦以前的二进制文件(OCX/DLL)不见了,那就惨了,VB 自动的殷勤的帮你生成一个新的 CLASSID,当然这些你都不用亲手管理,VB 都替你做了!这样,原来使用这个 COM 组件的程序很可能就不能工作了。VB 完全可以生成一个单独的文件用来存储 COM 对象的 CLASSID 的。所谓工程兼容就是只检查修改后的 COM 对象在属性/方法上面是否与前一个版本一致。如,如果你不小心删除了一个已经存在的方法/属性,在编译的时候,你就会被告知你破坏了对象的一致性(具体信息忘记了)。我忘记了二进制兼容是不是象程兼容那样检查方法/属性的一致性了。
你可以做个简单的试验验证一下。