Visual Basic 正失去其运行时库

阅读数:1421 2011 年 1 月 15 日

话题:.NET语言 & 开发架构

最近,Visual Basic 要求使用独立的运行时库,其中包含了很多核心框架并不具备的操作。除了遗留功能和一些随机、但很有用的辅助类之外,它还支持 VB 的晚绑定以及转换操作符等关键特性(C# 4 也有一个用于晚绑定的运行时库)。但遗憾的是,很多平台设计者(如 XBox 360/XNA 的设计者们)并不打算将完整的 CLR 包含进来。这意味着 Visual Basic 运行时库所需的操作代码并不会出现在这些平台上。

在 Visual Studio 2008 中,Visual Basic 编译器就可以使用不同的运行时库了。这样平台开发者们就可以发布自己的 VB 运行时版本而无需根据遗留特性进行扩展了。这一切还要归功于 Windows Phone 7 的出现。创建客户化实现的努力实在是太棒了。

从 VB 10 SP 1 开始,微软增加了一个新的编译器选项来解决这个问题。相对于构建客户化运行器的方式来说,微软将部分现有的运行时嵌入到了应用当中,其中只包含了一些必要的特性,如转换和 VB 特有的属性。如下特性并没有包含进来:

  • 遗留的 VB 函数——如 Left 和 Mid。
  • 遗留的 Like 操作符
  • 老式的 VB“On Error Goto Error”处理
  • 晚绑定
  • 很多 My Functionality

很多人对缺乏晚绑定感到惊讶万分,他们发现 C# 在需要该编译器选项的平台上也没有晚绑定。这主要是因为这些平台上并没有 DLR 的缘故。这并非是 VB 首次失去晚绑定能力,当使用.NET Compact Framework 编译时也是如此。

微软并不希望一般的开发者使用这个标志。相反,如果目标平台不包含 Microsoft.VisualBasic.dll,那么它会自动设置到项目模板中。

查看英文原文:Visual Basic is Losing Its Runtime Library