编译时,哪种情况下应该选择"工程兼容",哪种情况下选"二进制兼容"呀?以什么原则或标准来定呢?

解决方案 »

  1.   

    什么时候使用“版本兼容”选项?
    如果决定使用“版本兼容”特性,下面这些规则对于决定何时使用不同的选项会有所帮助:使用“不兼容”终止兼容性
    如果是在已有部件的新版本上开始工作,那么进行增强的唯一办法就是打破向后兼容性。此时,在第一次编译工程时设置“不兼容”。这可以保证在开始时标识符清单是空白的,而已有的程序不会错误地试图使用不兼容的版本。在编译不具有兼容性的现有工程之前,还要 修改部件的文件名,使不兼容的版本不会覆盖用户硬盘上以前的版本。
    改变工程属性对话框的通用选项卡上的工程名称,使不兼容的部件具有不同类型的库名。这就可确保部件提供的对象将具有唯一程序 ID 。 
    在“二进制版本兼容性的级别”中详细讨论了这些项目。用“不兼容”进行编译后,切换到“工程兼容”简化开发任务。在进行新的开发时使用“工程兼容”
    开发部件的第一个版本时应使用“工程兼容”。“工程兼容”保留类型库标识符,这样就不需要经常设置测试工程对部件工程的引用了。使用“工程兼容”还可以使测试时在部件工程和已编译部件之间切换更加容易。“工程兼容”在“工程兼容性:避免引用丢失”中讨论。对已有部件的新版本使用二进制兼容性
    如果希望用早期版本编译的应用程序能够在新版本下工作,那么在开发任何部件的第二个版本时应该切换到“二进制兼容”。切换到“二进制兼容”在相关主题“为兼容性提供参考点”中讨论。不要混用二进制兼容性和多接口
    如果使用多接口和 Implements 语句来提供向后兼容性,不要使用“二进制兼容”修改已定义为使用 Implemens 的抽象接口。要增强部件的任何一个接口,Visual Basic 会修改接口的 ID。通过增加接口来改进软件的技术依赖于接口不变性。就是说接口一旦定义就永不修改— 包括接口 ID。