MacOS / VisualStudioCode / Omnisharp缺少.NET Framework 4.6.1

问题描述

我正在运行macOS Catalina:

  • vscode 1.48.1
  • ms-dotnettools.csharp 1.23.1(下面是omnisharp)
  • Visual Studio for Mac 8.7.3
  • Mono MDK 6.12.0.91

我有一个针对.NET 4.6.1的项目。我为此项目使用vscode。我也有另一个出于Xamarin原因而使用Visual Studio For Mac的项目。不幸的是,似乎更高版本的Visual Studio For Mac至少需要Mono MDK6.10.x。该版本似乎不支持.NET 4.6.1。这意味着Omnisharp无法为vscode项目加载项目。我曾尝试将vscode项目的Mono MDK降级,但未成功。我的所有搜寻都让我进入了具有.NET Framework 4.6.1的Windows开发人员包的下载页面,这些页面无用,或者通过设置环境变量来迫使Omnisharp在其他路径上看到4.6.1框架的方法FrameworkPathOverride,移至系统上不存在的适当位置。在这一点上,我唯一能看到的就是将4.6.1应用程序重新定位到更高版本的框架,但这将是永远的。我真正需要的只是一个用于macOS的4.6.1框架。停顿吗?

编辑:是的,我知道.NET适用于Windows,而Mono适用于其他所有功能。 Mono提供与.NET版本的兼容性,Omnisharp过去已正确处理了此问题。仅在更新Visual Studio For Mac和Mono MDK之后出现此问题。

编辑:已解决,请参阅接受的答案以获取详细信息

解决方法

该问题似乎源于Omnisharp决定在内部包含Mono。它们默认使用该版本的编译器,该版本不适合.NET Framework,而是dotnet核心。 vscode中有一个设置,可强制Omnisharp改为使用全局安装的Mono。将其设置为"always"可解决此问题。打开vscode设置,然后搜索“ global mono”。将“ Omnisharp:使用全局单声道”设置设置为“始终”。或者,打开您的settings.json文件并添加"omnisharp.useGlobalMono": "always"

,

你不能。

.NET Framework 是Microsoft Windows专有的。

Visual Studio for Mac适用于.NET Core,.NET Standard,Xamarin和Mono。

在Mac上构建和使用.NET Framework项目的唯一方法是使用Bootcamp或VM。