最近,Visual Basic要求使用独立的运行时库,其中包含了很多核心框架并不具备的操作。除了遗留功能和一些随机、但很有用的辅助类之外,它还支持VB的晚绑定以及转换caozuofu.html" target="_blank">操作符等关键特性(C# 4也有一个用于晚绑定的运行时库)。但遗憾的是,很多平台设计者(如XBox 360/XNA的设计者们)并不打算将完整的CLR包含进来。这意味着Visual Basic运行时库所需的操作代码并不会出现在这些平台上。
在Visual Studio 2008中,Visual Basic编译器就可以使用不同的运行时库了。这样平台开发者们就可以发布自己的VB运行时版本而无需根据遗留特性进行扩展了。这一切还要归功于Windows Phone 7的出现。创建客户化实现的努力实在是太棒了。
从VB 10 SP 1开始,微软增加了一个新的编译器选项来解决这个问题。相对于构建客户化运行器的方式来说,微软将部分现有的运行时嵌入到了应用当中,其中只包含了一些必要的特性,如转换和VB特有的属性。如下特性并没有包含进来:
很多人对缺乏晚绑定感到惊讶万分,他们发现C#在需要该编译器选项的平台上也没有晚绑定。这主要是因为这些平台上并没有DLR的缘故。这并非是VB首次失去晚绑定能力,当使用.NET Compact Framework编译时也是如此。
微软并不希望一般的开发者使用这个标志。相反,如果目标平台不包含Microsoft.VisualBasic.dll,那么它会自动设置到项目模板中。
查看英文原文:Visual Basic is Losing Its Runtime Library
作者 Jonathan Allen 译者 张龙