gpt4 book ai didi

.net - Microsoft.VisualBasic 命名空间是 "true .NET"代码吗?

转载 作者:行者123 更新时间:2023-12-05 06:56:57 33 4
gpt4 key购买 nike

我的开发团队正准备开始一个新项目。自 VB3 时代以来,该商店一直是“VB 商店”,但现在流行的观点是我们是“.NET 商店”,并且由于 C# 是专门为 .NET 创建的,而 VB.NET 是一种改造,我们我决定继续只编写 C#。争议围绕着 Microsoft.VisualBasic 命名空间在新开发中是否具有合法地位,或者它是否仅用于向后兼容 VB6(及更早版本)代码的问题展开。另一个更有趣的问题是 Microsoft.VisualBasic 命名空间“下”的代码是否是 .NET 代码,如果它真的是旧的 VB 运行时,小心地打包在 .NET 包装器中,使其实际上成为 COM 互操作控件(类似于 WinForms 包装非 .NET Win32 窗口 API 但仅公开 .NET API 以供使用的方式)。

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

我正在寻找的是链接——最好是无懈可击的微软资源——指向以某种方式明确回答这个问题的文档。我已经在 Google 上尝试了几种搜索排列,但没有进一步深入了解这个问题。

编辑:显然我没有说清楚我的问题。我不是在问 VB.NET 是否是真正的 .NET 代码。我正在尝试确定 Microsoft.VisualBasic 命名空间“之下”的内容是否是 .NET 代码,或者它是否是经过精心打包并作为 .NET 代码公开的旧 VB6 运行时。有人已经说过,命名空间的 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 存在,它就会存在。

一些相关链接:

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

The Visual Basic Runtime provides the underlying implementation for global Visual Basic functions and language features such as Len, IsDate, and CStr. And though the new Visual Basic Runtime provides similar facilities as its predecessors, it is entirely managed code (developed in Visual Basic .NET) that executes on the common language runtime. Furthermore, the Visual Basic Runtime is part of the .NET Framework, so it is never something separate that your application has to carry or deploy.

The Visual Basic 6.0 Compatibility library is distinct from the Visual Basic Runtime. The Microsoft.VisualBasic.Compatibility namespace is used by the tools that upgrade Visual Basic 6.0 code to Visual Basic .NET. It is a bridge to support Visual Basic 6 features that are not directly supported by the .NET implementation of Visual Basic. Unlike the Visual Basic Runtime, the compatibility library is not implicitly referenced by all Visual Basic .NET applications. When you upgrade a Visual Basic 6 project to Visual Basic .NET, the upgrade wizard adds a reference to Microsoft.VisualBasic.Compatibility.

The compatibility classes should not be used for new development. The Microsoft.VisualBasic.Compatibility namespace adds a layer of complexity to your Visual Basic .NET application and introduces some minimal performance costs that could be eliminated by recoding portions of the application. In addition, the Compatibility namespace often contains many classes that wrap COM objects, and as stated earlier, depending on COM objects is not as optimal as a pure managed implementation.

关于.net - Microsoft.VisualBasic 命名空间是 "true .NET"代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65006596/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com