二进制兼容用的比较多一点,是保持ClassID不变,工程兼容用的比较少,不太清楚?

解决方案 »

  1.   

    有谁知道vb中工程兼容和二进制兼容之间的区别 
    //“工程兼容”选项实际上和“二进制兼容”选项(在“版本兼容性”中描述)无关。“工程兼容”更确切的叫法应该是“工程不兼容性”,因为每次编译工程时,Visual Basic 都会抛弃除了 GUID 以外的所有有关类型库的东西。
      

  2.   

    这个用一两句很难说得具体。但大体上是这样的:第一次把部件工程生成可执行文件(.Exe、.dll 或者 .ocx)时,Visual Basic 自动把“版本兼容”选项设为“工程兼容”,并向已生成的可执行文件中插入路径。这可以保证从一个开发任务转向另一个时,测试工程和部件仍能保持连接。如果因为某些原因工程被设置为“不兼容”,可以手工修改它为另两种“版本兼容”选项中的一种。“二进制兼容”是在开发已有部件的增强版时使用的选项,对于新的开发来说应该使用“工程兼容”。注意 “工程兼容”选项实际上和“二进制兼容”选项(在“版本兼容性”中描述)无关。“工程兼容”更确切的叫法应该是“工程不兼容性”,因为每次编译工程时,Visual Basic 都会抛弃除了 GUID 以外的所有有关类型库的东西。(这句话似乎很难理解,应细细体味)只要开始在已有部件的新版本上工作,就需要指定一个类型库,Visual Basic 用它作为兼容性的参考点。多数情况下,这个类型库就包含在最后发布的部件版本的可执行文件(.Exe、.dll,或 .ocx 文件)中。对于更新的部件,每次为它建立中间版本时, Visual Basic 将从该 .Exe 文件中提取有关旧接口的信息,并把它和类模块的新接口相比较。“为兼容性提供参考点”介绍了建立参考点的过程。保持引用版本和中间编译版本保持分离
    重点 保持被指定为引用版本的 .Exe 文件备份和新版本的编译备份之间的独立。每次进行中间编译时,Visual Basic 都会向可执行文件中添加新的接口标识符集,每个类模块一个标识符。如果把编译备份指定为参考版本,那么每次版本兼容的中间编译所增加的接口标识符都会堆积在一起。(对于版本相同的编译,接口标识符不会改变。)除了每个接口标识符要占用十六个字节以外,在有些情况下,在可执行文件中包含无用的接口标识符— 只有测试应用程序曾经使用过的中间版本— 将会减慢进程间对部件的访问,同时安装该部件的计算机的 Windows 注册表也会被无用的接口标识符弄得凌乱不堪。如果参考版本是上一次发布的可执行文件的备份,那么所有的中间编译会有相同的接口版本号,而最终编译只包含所需的接口标识符:所有参考版本的标识符集(为了提供向后兼容)再加上新版本中所有类的接口标识符集。注意 开发部件的第一个版本时,使用“工程兼容”而不是“二进制兼容”,情况恰好相反,参考版本会成为中间编译的版本。这不会使类型库膨胀,因为“工程兼容”从不保存接口标识符。就到这里吧,再细节的部分就看看MSDN吧。