MacOS/VisualStudioCode/Omnisharp 缺少 .NET Framework 4.6.1

MacOS/VisualStudioCode/Omnisharp missing .NET Framework 4.6.1

我使用的是 macOS Catalina 运行:

我有一个针对 .NET 4.6.1 的项目。我在这个项目中使用 vscode。出于 Xamarin 的原因,我还有另一个使用 Visual Studio For Mac 的项目。不幸的是,Visual Studio For Mac 的更高版本似乎至少需要 Mono MDK 6.10.x。该版本似乎不支持 .NET 4.6.1。这意味着 Omnisharp 无法加载 vscode 项目的项目。我已经尝试为 vscode 项目降级 Mono MDK 但没有成功。我所有的谷歌搜索都让我进入了 Windows 的开发者包的下载页面,这些包有 .NET Framework 4.6.1,这是无用的,或者通过设置强制 Omnisharp 在其他路径上看到 4.6.1 框架的方法一个环境变量,FrameworkPathOverride,到适当的地方,我的系统上不存在。在这一点上,我能看到的唯一途径是将我的 4.6.1 应用程序重新定位到更高版本的框架,但这将永远需要。我真正需要的是 macOS 的 4.6.1 框架。哈尔普?

编辑:是的,我知道 .NET 适用于 Windows 而 Mono 适用于其他一切。 Mono 提供与 .NET 版本的兼容性,而 Omnisharp 过去已经妥善处理了这一点。该问题仅在更新 Visual Studio For Mac 和 Mono MDK 后出现。

编辑:已解决,详情请参阅接受的答案

你不能。

.NET Framework 专供 Microsoft Windows.

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

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

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

  1. 检查您使用哪个版本的单声道(即 /Library/Frameworks/Mono.framework/Versions/Current/
  2. 在 VSCode 中编辑 settings.json 并添加行 "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current/"
  3. 还在settings.json,编辑集"omnisharp.useGlobalMono": "always"
  4. cmd+shift+p和selectDeveloper: Reload Window

我遇到了同样的问题。它由@jsimon 的步骤修复。谢谢!

OS : macOS Monterey 版本 12.2 MacBook Pro M1 arm64

VsCode 1.64.0(通用) dotnet --version 6.0.101

步骤:1.打开VSCode 2.代码->首选项->扩展 3. 单击 C# 上的 Visual Studio 代码(由 OmniSharp 提供支持)的 (wheal) 设置。和扩展设置 4. 在 settings.json 中找到编辑 添加 "omnisharp.useGlobalMono": "always" 到最后。如果您有其他设置,您可能需要添加“,” 5. 保存并关闭,然后打开 VsCode 项目。 6.返回ominsharp设置 7. Omnisharp:使用 Modern Net,select 使用 .NET 6(在我的例子中) 享受!

以防有人因为您寻找其他来源来解决此问题而仍然面临此问题。

  1. 首先按照@jsimon 的回答。
  2. 我不小心添加了此设置 "omnisharp.useModernNet": true,它通常表示 .NET 6:This version _does not_ support non-SDK-style .NET Framework projects, including Unity。当我删除此设置时 - 一切都已修复。