vb中工程兼容和二进制兼容之间的区别

来源:互联网 发布:手机笑话软件 编辑:程序博客网 时间:2024/04/27 21:33
vb中工程兼容和二进制兼容之间的区别     第一次把部件工程生成可执行文件(.Exe、.dll 或者 .ocx)时,Visual Basic 自动把“版本兼容”选项设为“工程兼容”,并向已生成的可执行文件中插入路径。这可以保证从一个开发任务转向另一个时,测试工程和部件仍能保持连接。

如果因为某些原因工程被设置为“不兼容”,可以手工修改它为另两种“版本兼容”选项中的一种。“二进制兼容”是在开发已有部件的增强版时使用的选项,对于新的开发来说应该使用“工程兼容”。

注 意 “工程兼容”选项实际上和“二进制兼容”选项(在“版本兼容性”中描述)无关。“工程兼容”更确切的叫法应该是“工程不兼容性”,因为每次编译工程时, Visual Basic 都会抛弃除了 GUID 以外的所有有关类型库的东西。(这句话似乎很难理解,应细细体味)

只要开始在已有部件的新版本上工作,就需要指定一个类型库,Visual Basic 用它作为兼容性的参考点。多数情况下,这个类型库就包含在最后发布的部件版本的可执行文件(.Exe、.dll,或 .ocx 文件)中。

对于更新的部件,每次为它建立中间版本时, Visual Basic 将从该 .Exe 文件中提取有关旧接口的信息,并把它和类模块的新接口相比较。

“为兼容性提供参考点”介绍了建立参考点的过程。

保持引用版本和中间编译版本保持分离
重点 保持被指定为引用版本的 .Exe 文件备份和新版本的编译备份之间的独立。

每次进行中间编译时,Visual Basic 都会向可执行文件中添加新的接口标识符集,每个类模块一个标识符。如果把编译备份指定为参考版本,那么每次版本兼容的中间编译所增加的接口标识符都会堆积在一起。(对于版本相同的编译,接口标识符不会改变。)

除了每个接口标识符要占用十六个字节以外,在有些情况下,在可执行文件中包含无用的接口标识符— 只有测试应用程序曾经使用过的中间版本— 将会减慢进程间对部件的访问,同时安装该部件的计算机的 Windows 注册表也会被无用的接口标识符弄得凌乱不堪。

如果参考版本是上一次发布的可执行文件的备份,那么所有的中间编译会有相同的接口版本号,而最终编译只包含所需的接口标识符:所有参考版本的标识符集(为了提供向后兼容)再加上新版本中所有类的接口标识符集。

注意 开发部件的第一个版本时,使用“工程兼容”而不是“二进制兼容”,情况恰好相反,参考版本会成为中间编译的版本。这不会使类型库膨胀,因为“工程兼容”从不保存接口标识符。
原创粉丝点击