将 .NET Framework VB 项目转换为 .NET Core
Convert a .NET Framework VB project to .NET Core
由于某些原因,我必须将一些项目(VB.NET 和 C#)转换为 .NET Core。
我关注了各种来源的信息,来自
Convert .Net Core to .Net Framework
和 Assembly Portability 预防性地意识到要做的工作。
Visual Studio 2019 Intellisense,转换后,不显示任何警报,但 Visual Basic 项目无法编译。
Visual Compiler 显示命名空间错误
“Global.Microsoft.VisualBasic.Devices”和“Global.Microsoft.VisualBasic.ApplicationServices”(Type 'Global.Microsoft...' 不是定义").
对于每个 VB 项目,我都更新了 Microsoft.VisualBasic 包。当前版本现在是 10.3.0。但是问题依旧。
每个项目都针对 .NET Core 3.1 框架。
可能是什么问题?
这是与应用程序框架和 My
命名空间的 VB 特定功能相关的内容。例如,My.Computer
公开了 Microsoft.VisualBasic.Devices.Computer
类型的实例。 Microsoft.VisualBasic.ApplicationServices
与您可以在项目属性中设置的关闭模式以及您可以处理以在应用程序启动时执行的 Startup
事件相关。
在尝试从 .NET Framework 迁移到 .NET Core 之前,您基本上需要确保 none 这些东西正在您的应用程序中使用。我从未尝试过,但我认为这意味着禁用应用程序框架并创建您自己的 Main
方法作为入口点,就像您在 C# 中所做的那样,并替换 [=10= 的任何使用] 命名空间具有等效的 .NET Framework 类型和成员,就像您在 C# 中使用的那样。
这是我的案例的解决方案:编译成功添加
<VBRuntime>Embed</VBRuntime>
到 .vbproj 文件。 whosebug.com/a/20005217/3185385
虽然@michele74c 发布的解决方案有效,但我也可以通过删除
来解决这个问题
<MyType>Console</MyType>
来自我的 .vbproj 文件。
由于某些原因,我必须将一些项目(VB.NET 和 C#)转换为 .NET Core。
我关注了各种来源的信息,来自 Convert .Net Core to .Net Framework 和 Assembly Portability 预防性地意识到要做的工作。
Visual Studio 2019 Intellisense,转换后,不显示任何警报,但 Visual Basic 项目无法编译。
Visual Compiler 显示命名空间错误 “Global.Microsoft.VisualBasic.Devices”和“Global.Microsoft.VisualBasic.ApplicationServices”(Type 'Global.Microsoft...' 不是定义").
对于每个 VB 项目,我都更新了 Microsoft.VisualBasic 包。当前版本现在是 10.3.0。但是问题依旧。
每个项目都针对 .NET Core 3.1 框架。
可能是什么问题?
这是与应用程序框架和 My
命名空间的 VB 特定功能相关的内容。例如,My.Computer
公开了 Microsoft.VisualBasic.Devices.Computer
类型的实例。 Microsoft.VisualBasic.ApplicationServices
与您可以在项目属性中设置的关闭模式以及您可以处理以在应用程序启动时执行的 Startup
事件相关。
在尝试从 .NET Framework 迁移到 .NET Core 之前,您基本上需要确保 none 这些东西正在您的应用程序中使用。我从未尝试过,但我认为这意味着禁用应用程序框架并创建您自己的 Main
方法作为入口点,就像您在 C# 中所做的那样,并替换 [=10= 的任何使用] 命名空间具有等效的 .NET Framework 类型和成员,就像您在 C# 中使用的那样。
这是我的案例的解决方案:编译成功添加
<VBRuntime>Embed</VBRuntime>
到 .vbproj 文件。 whosebug.com/a/20005217/3185385
虽然@michele74c 发布的解决方案有效,但我也可以通过删除
来解决这个问题<MyType>Console</MyType>
来自我的 .vbproj 文件。