我工作过的许多公司在选择VB.NET作为他们的核心开发工具时都经历了一个长时间的抉择,他们所关心的最主要的问题之一是如果他们不使用C#语言就不能开发出纯.NET框架代码。主要有两个原因使他们得出这样的结论:首先,由于VB(6.0或早期版本)运行时的限制,VB在开发COM构件的能力方面不如C语言功能强大,他们关心这些限制是否在.NET中依旧存在;再者,由于微软提倡将C#作为在.NET平台上的主要开发工具,很多VB开发者怀疑微软是否已经在VB.NET改进了VB先前版本的功能。
有个客户曾经跟我提起过这个问题,还特意请求我帮助他的公司在不依赖VB6中的任何功能时如何使用VB.NET作为纯.NET开发语言。当我问他为什么他认为VB.NET不是纯.NET开发语言时,他告诉我他最近将一个项目从VB6升级到VB.NET时,他在VB.NET中看到有很多象Imports Microsoft.VisualBasic和Imports Microsoft.VisualBasic.Compatibilit的输入语句,这些语句表明了VB.NET依旧在使用早期VB版本的一些功能;他说“如果VB.NET是.NET环境中一流的开发语言,为什幺还要用到早先VB版本中的功能呢?”。为了回答他的这个问题,并且给VB.NET的开发者提供一个如何使用这些包的建议,我将在此文章中解释为什么微软还在.NET平台中实现VB早期版本的中的一些功能的原因。
VB中的核心动态链接库(DLL)
将核心VB语言建造到.NET框架的方式同C#一样,主要的区别是微软为VB的开发者将两个附加的库增加到.NET中。首先,Microsoft.VisualBasic是.NET中可重新分发包的一个重要组成部分,它是VB早期版本的功能在.NET中的一个实现,同时两者也有一些细微的差别。实际上,有些VB函数(