最近,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,那么它会自动设置到项目模板中。
评论