Microsoft.VisualBasic命名空间是否为“true.NET”代码?

我的开发团队正准备开始一个新项目。从VB3时代起,这个商店就一直是一个“VB商店”,但现在的主流观点是我们是一个“.NET商店”,而且由于C#是专门为.NET创建的,而VB.NET是一个改进版,我们决定只编写C#。争论围绕着Microsoft.VisualBasic命名空间在新开发中是否具有合法地位,或者它是否仅用于VB6(及更早版本)代码的向后兼容性的问题。另一个更进一步、更有趣的问题是,如果Microsoft.VisualBasic命名空间下的代码真的是旧VB运行时的.NET代码,那么它是否甚至是.NET代码,并仔细打包在.NET包装器中,使其实际上成为COM互操作控件(类似于WinForms包装非.NET Win32 windowing API,但仅公开.NET API以供使用)

为了使这一点更加令人困惑,我们的开发团队有一位Microsoft咨询服务顾问告诉我们,Microsoft不再支持Visual Basic,包括Microsoft.VisualBasic命名空间下的VB运行时

我要找的是链接——最好是无懈可击的微软资料来源——到以某种方式明确回答这个问题的文档。我已经在谷歌上尝试了几个搜索排列,但还没有接近这个问题的底部

编辑:显然我没有把问题说清楚。我不是问VB.NET是否为真.NET代码。我试图确定Microsoft.VisualBasic命名空间下的是.NET代码,还是旧的VB6运行时被仔细打包并作为.NET代码公开。有人已经说过,名称空间的9/10只是包装了.NET中其他地方的代码;那另外的1/10呢

Microsoft.VisualBasic.dll<>Microsoft.VisualBasic.Compatibility.dll

(或者,如果您愿意,Microsoft.VisualBasic.dll!=Microsoft.VisualBasic.Compatibility.dll;

Microsoft.VisualBasic.Compatibility命名空间仅供VB6升级向导使用,可能会在将来的版本中删除,并且不应用于新的开发

Microsoft.VisualBasic名称空间绝对是100%真实的.Net,完全受支持,并且只要.Net存在,它就会存在

一些相关链接:

  • 讨论:是否不推荐使用Microsoft.VisualBasic?
  • 文章:用VB.NET实现纯.NET开发
  • 请参阅此MSDN VBFAQ博客帖子的评论

编辑:添加此MSDN文章中的官方文字:

VisualBasic运行时提供
全球战略的基本实施
visualbasic函数与语言
功能,如Len、IsDate和
CStr。尽管新的VisualBasic
运行时提供了与
它的前身,完全是
托管代码(在Visual Studio中开发)
在上执行的
公共语言运行库
。此外
Visual Basic运行时是
NET框架,所以它从来都不是
一个单独的东西,你的
应用程序必须携带或部署

Visual Basic 6.0兼容性
图书馆有别于视觉图书馆
基本运行时。这个
Microsoft.VisualBasic.Compatibility
命名空间由以下工具使用:
将Visual Basic 6.0代码升级到
Visual Basic.NET。这是通往世界的桥梁
支持Visual Basic 6功能
.NET不直接支持
visualbasic的实现不像
VisualBasic运行时
兼容性库不可用
由所有可视对象隐式引用
基本.NET应用程序
。当你
将Visual Basic 6项目升级为
Visual Basic.NET,升级向导
添加对的引用
Microsoft.VisualBasic.Compatibility

不应使用兼容类
用于新开发
。这个
Microsoft.VisualBasic.Compatibility
命名空间增加了一层复杂性
到您的Visual Basic.NET应用程序
并介绍了一些最基本的概念
可能导致的性能成本
通过重新编码
应用此外,
兼容性命名空间通常包含
许多包装COM对象的类,
如前所述,取决于
COM对象不如
纯托管实现

发表评论