与 Visual Basic 的早期版本相比,Visual Basic .NET 有较大变化。因为后者为了利用 .NET 平台而从头进行了设计,所以在许多方面与早期版本不兼容。
注意 Visual Basic .NET 和 Visual Basic 6.0 可以安装在同一台计算机上并且可以同时运行。可在同一台计算机上安装和执行用 Visual Basic .NET 和 Visual Basic 6.0 编写的应用程序。用 Visual Basic .NET 编写的组件可以同用 Visual Basic 的早期版本及其他语言编写的 COM 组件互用。
多数情况下,需要将 Visual Basic 6.0 应用程序升级到 Visual Basic .NET,以便能在继续开发时利用 .NET 平台的优点。但是,可能存在想要继续在 Visual Basic 6.0 中开发而不进行升级的情况。决定是否对应用程序进行升级的因素包括是否存在 Visual Basic .NET 中不支持的功能,以及由于不兼容和结构上的考虑而需做的改编量。
不支持的功能
Visual Basic .NET 中不再支持 Visual Basic 6.0 中的以下功能。有关更多信息,请参见 Visual Basic 6.0 应用程序的升级准备工作。
- OLE 容器控件 Visual Basic .NET 中没有等效项。依赖此控件的应用程序应仍然使用 Visual Basic 6.0。
- 动态数据交换 (DDE) 不再支持 DDE 方法。依赖 DDE 的应用程序应改为使用其他应用程序间通信的方法,或仍应使用 Visual Basic 6.0。
- DAO 或 RDO 数据绑定 Visual Basic .NET 中不支持绑定到 DAO 或 RDO 数据源的数据;Data 控件和 RemoteData 控件没有等效项。只能通过代码访问 DAO 和 RDO。依赖 DAO 或 RDO 数据绑定的应用程序应更新为使用 ADO,或仍应使用 Visual Basic 6.0。
- Visual Basic 5.0 版控件 Visual Basic 6.0 包括 Visual Basic 5.0 版的 Windows 公共控件和 Data-Bound Grid 控件。这些控件与 Visual Basic .NET 不兼容。依赖于这些控件的应用程序应更新以使用 6.0 版的控件或仍然使用 Visual Basic 6.0。
- DHTML 应用程序 Visual Basic .NET 中没有等效项。但是,DHTML 应用程序可以同 Visual Basic .NET 技术互用。
- ActiveX 文档 Visual Basic .NET 中没有等效项。但是,DHTML 应用程序可以同 Visual Basic .NET 技术互用。应将 ActiveX 文档重写为用户控件,或仍应使用 Visual Basic 6.0。
- 属性页 Visual Basic .NET 中没有等效项。如果应用程序在很大程度上依赖属性页,则它仍应使用 Visual Basic 6.0。
确定需要的改编量
由于 Visual Basic 6.0 和 Visual Basic .NET 之间存在很多差异,大部分应用程序需要进行某些改编,以处理无法直接映射的项或在其他方面不兼容的项。需要的改编量取决于许多因素,包括应用程序的类型、功能和使用的语言构造。
确定需要的改编量的最简单方法是运行“升级向导”并查看升级报告中的问题列表。应用程序升级后,会创建新的副本;原始应用程序则保持不变。如果查看报告后决定不升级,则只需删除新项目并继续用 Visual Basic 6.0 开发。
以下是可能影响升级决策的其他注意事项。
- 单层数据库应用程序 因为不支持绑定到 DAO 的数据,所以可能需要对某些简单的应用程序进行大量的改编,这些应用程序使用直接绑定到本地数据库(如用 Microsoft Access 创建的数据库)的控件。
- Visual Basic 外接程序 因为 Visual Basic .NET 使用 Visual Studio 集成开发环境,所以用于扩展性的对象模型与 Visual Basic 6.0 的对象模型之间有显著的区别。需要对外接程序进行相当数量的改编。
- 游戏 由于 Visual Basic .NET 具有不同的性能特点,依赖 Visual Basic 6.0 的特定性能特点的应用程序(如动作游戏)需要改编。
- 图形 不支持窗体的图形方法以及形状和线条控件。在窗体上绘制时大量使用这些功能的应用程序将需要相当多的改编。
- 拖放功能 用于拖放功能的模型将会有很大的改变;需要重写所有执行拖放操作的代码。
- 变量 应用程序升级后,Variant 数据类型转换为 Object 数据类型。如果应用程序非常依赖变量,该转换可能会导致应用程序的行为发生细微的改变。例如,在 Visual Basic 6.0 中表达式
IsObject(Variant)
计算为 false;而在 Visual Basic .NET 中该表达式更改为IsObject(Object)
,它计算为 true。 - Windows API 由于语言的更改,需要对 Windows API 的许多调用进行修改或用 .NET Framework 函数进行替换。