首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Microsoft.VisualBasic名称空间是“真正的.NET”代码吗?

Microsoft.VisualBasic名称空间是“真正的.NET”代码吗?
EN

Stack Overflow用户
提问于 2008-10-22 16:11:42
回答 13查看 9.4K关注 0票数 58

我的开发团队正准备开始一个新项目。自从VB3时代以来,这个商店就是一个"VB商店“,但现在流行的观点是,我们是一个".NET商店”,既然C#是专门为.NET创建的,而VB.NET是一个翻新的版本,我们决定继续只编写C#。争论围绕着这样一个问题: Microsoft.VisualBasic名称空间在新的开发中是否具有合法的位置,或者它是否只是为了向后兼容VB6 (和更旧的)代码。另一个更有趣的问题是,Microsoft.VisualBasic命名空间下的代码是否真的是.NET代码,即它是否真的是精心包装在.NET包装中的旧VB运行时,使其实际上是COM互操作控件(类似于WinForms包装非.NET Win32窗口API,但只公开.NET API以供使用)。

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

我正在寻找的是链接--最好是到无可指摘的Microsoft来源的链接--指向以某种方式明确回答这个问题的文档。我已经在谷歌上尝试了几种搜索组合,但都没有找到这个问题的答案。

编辑:显然我没有把我的问题说清楚。我不是在问VB.NET是否是真正的.NET代码。我正在尝试确定“在”Microsoft.VisualBasic名称空间下的东西是不是.NET代码,或者是不是被仔细打包并公开为.NET代码的旧VB6运行时。有人已经说过,名称空间的9/10只是包装了.NET中其他地方的代码;那么其他1/10又如何呢?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-10-22 17:05:22

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

(或者,如果您愿意,可以使用Microsoft.VisualBasic.dll != Microsoft.VisualBasic.Compatibility.dll;)

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

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

以下是一些相关链接:

关于Is Microsoft.VisualBasic deprecated?

  • 讨论

关于this MSDN VBFAQ blog post

编辑:添加来自this MSDN article的官方单词

Visual Basic运行库为全局Visual Basic函数和语言功能(如Len、IsDate和CStr )提供基础实现。尽管新的Visual Basic运行库提供了与其以前版本类似的功能,但它完全是在公共语言运行库上执行的托管代码(在Visual Basic .NET中开发)。此外,Visual Basic运行库是.NET框架的一部分,因此应用程序不必单独携带或部署它。

Visual basic6.0兼容性库与Visual Basic运行库不同。Microsoft.VisualBasic.Compatibility命名空间由将Visual basic6.0代码升级到Visual Basic .NET的工具使用。它是支持Visual basic6功能的桥梁,而Visual Basic的.NET实现不直接支持这些功能。与Visual Basic运行库不同,兼容性库并不是所有Visual Basic .NET applications都隐式引用的。将Visual basic6项目升级到Visual Basic .NET时,升级向导会添加对Microsoft.VisualBasic.Compatibility的引用。

对于新的开发,不应使用兼容性类。Microsoft.VisualBasic.Compatibility命名空间为Visual Basic .NET应用程序增加了一层复杂性,并引入了一些最小的性能成本,这些成本可以通过对应用程序的各个部分进行重新编码来消除。此外,兼容性命名空间通常包含许多包装COM对象的类,如前所述,依赖于COM对象并不像纯托管实现那样最佳。

票数 61
EN

Stack Overflow用户

发布于 2008-10-22 16:24:17

使用.NET反射器并窥视它。我经常这样做。Microsoft.VisualBasic名称空间中的10个调用中有9个只是.NET方法的包装器。

你的顾问正在做顾问最擅长的事情:炫耀他的存在是为了让你的预算更大。微软不再支持VB6,但VS2008有VB .NET的事实应该表明他们至少还会支持VB .NET几年。

就我个人而言,我对待Microsoft.VisualBasic就像对待其他.NET类的外观。当它是一个个人项目时,我会使用它,并且我可以比使用BCL类更快、更容易地完成工作。与String.Substring相比,Microsoft.VisualBasic.Strings.Right就是一个很好的例子。但是,对于VB名称空间中的许多函数(如Val),在框架的非特定语言部分中有更健壮和更强大的版本。如果我是为了工作而写代码,我不会使用VB库。这使得不熟悉VB的C#开发人员不会很难理解我的代码。

票数 24
EN

Stack Overflow用户

发布于 2008-10-22 16:30:08

与FCL中的某些功能类似,一些Microsoft.VisualBasic命名空间代码是用托管代码编写的,其中一些代码包装了对非托管代码的调用。

它当然不依赖于vb6运行时,也肯定不会悄悄地在引擎盖下安装vb6运行时。

您应该加载.NET反射器并查看Microsoft.VisualBasic名称空间中的代码。

如果您想继续在C#中使用此名称空间中的功能,那么继续这样做,它不会消失。有些代码可能会被标记为已弃用/过时,但我希望在15年内,您仍然可以使用Microsoft.VisualBasic功能运行相同的应用程序,而不会遇到任何问题。

更新:除了使用.NET反射器之外,您现在还可以查看/调试源Microsoft.VisualBasic命名空间/Microsoft.VisualBasic.DLL代码:

http://blogs.msdn.com/vbteam/archive/2008/01/19/source-code-of-visual-basic-runtime-has-been-released-to-public.aspx

去获取框架的批量下载程序,并在空闲时仔细阅读代码:

http://www.codeplex.com/NetMassDownloader

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/226517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档