【问题标题】:Cannot start OmniSharp because Mono version >=6.4.0 is required无法启动 OmniSharp,因为需要 Mono 版本 >=6.4.0
【发布时间】:2021-06-05 00:55:40
【问题描述】:

我使用 VSCode 进行 Unity 开发。不幸的是,我没有在 VSCode 中为我的 C# 代码获得任何 IntelliSense。根本原因似乎是 OmniSharp 无法找到 Mono,因为 VSCode 中的 OmniSharp 日志显示: "[ERROR] Error: Cannot start OmniSharp because Mono version >=6.4.0 is required."

这是我多次遇到的问题。在 2021 年 3 月 4 日和之前的几个月里,一切都运行良好,IntelliSense 可以完美地用于多个 Unity 项目和多个 Unity 版本。然后第二天它由于某种未知的原因坏了,并且没有为任何项目工作,直到深夜在尝试了一堆东西之后我才能够让它工作。现在今天早上我又遇到了这个错误。每次在它工作和崩溃之间,除了重新启动我的计算机之外,我没有做任何更改。

  • MacOS Mojave 10.14.6
  • Unity 2020.2.0f1 + 适用于 Unity 的 Visual Studio Code Editor 1.2.3 包
  • VSCode 1.54.1 + C# 1.23.0 VSCode 插件
  • 单声道 6.12.0.122 通过brew 安装在/usr/local/bin/mono
  • Mono 6.12.0 也手动安装在 /Library/Frameworks/Mono.framework/Versions/Current/Commands/
  • which mono 在我的终端和 VSCode 的终端输出 /usr/local/bin/mono
  • mono --version 在两个终端输出 Mono JIT compiler version 6.12.0.122
  • echo $PATH 包含两个版本的 Mono 的路径,/usr/local/bin/mono 首先出现
  • msbuild 输出 Microsoft (R) Build Engine version 16.6.0 for Monowhich msbuild 输出 /usr/local/bin/msbuild
  • dotnet --info 输出 .NET Core SDK Version: 3.1.201

在我的 VSCode 设置中,我设置了以下内容:

"omnisharp.loggingLevel": "debug",
"omnisharp.monoPath": "/usr/local/bin/mono",
"omnisharp.useGlobalMono": "always"

我尝试过的事情:

  • 降级/升级 VSCode 的 C# 插件(包括到最新版本的 1.23.9)
  • 降级 Unity 的 Visual Studio Code Editor 包
  • 切换 VSCode 以使用我在 /Library/Frameworks/Mono.framework/Versions/Current/Commands/ 手动安装的 Mono 6.12.0 版本(并卸载 brew 安装的版本)
  • 在 VSCode 中取消设置 omnisharp 设置(它会导致关于 .NET SDK 的不同错误)
  • 删除 Unity 的 .csproj.sln 文件以便重新生成它们
  • 手动告诉 Unity 重新生成所有 .csproj 文件
  • 正在重新启动
  • 查看有关该主题的许多论坛帖子和 Stack Overflow 问题以寻求解决方案

那么对于让 IntelliSense 在 VSCode 中工作有什么建议吗?调试为什么 OmniSharp 找不到 Mono 的任何提示?我觉得我已经尽我所能将 OmniSharp 指向正确的位置,我希望它能记录更多关于它正在尝试的内容。

【问题讨论】:

    标签: c# unity3d visual-studio-code mono omnisharp


    【解决方案1】:

    我能够通过在https://code.visualstudio.com/updates/v1_52 将 Visual Studio Code 降级到 1.52.1 并在 VS Code 中关闭自动更新来解决此问题。 OmniSharp 现在无一例外地工作。似乎根本原因在于 VS Code 1.54(或可能是 1.53)

    【讨论】:

    • 这是正确的解决方案。我之前也遇到过同样的问题,不记得具体是什么版本了。而这周当 vscode 自动更新到 1.54 时,omnisharp 又失败了。降级到 1.52 可以修复它。
    • 在检查了一百万次我的单声道版本、.net、我的 $PATH 和我的 Omnisharp 配置之后,这是真正的解决方案。谢谢!
    【解决方案2】:

    我遇到了同样的问题(没有 Intellisense)。尝试了这里和其他地方列出的许多东西。正如大多数地方所建议的那样,将“ominsharp.useGlobalMono”变成了“从不”,并在出现提示时重新启动了omnisharp,它没有任何改变。但是,我收到了一个以前没有遇到的错误(没有保存它,但它的消息表明不支持旧版本的 mono(?))。

    因此,我将其放回(“始终”)并在出现提示时重新启动了omnisharp……并且自动完成功能正常工作。甚至没有退出 VS 代码。脚本仍然打开。不知道为什么它现在有效,但它确实有效。所以....设置为从不并返回到始终? 使用 VS Code v 1.55.2。 使用 dotnet 5.0.202

    【讨论】:

    • 这也解决了我的问题。根据其他建议,我将 auto 更改为 always,收到需要 Mono 6.4.0 的错误;更改为从不并返回自动,然后一切都开始工作。 :耸肩:
    【解决方案3】:

    "omnisharp.useGlobalMono" 设置为"never",并确保在工作区的根目录中有一个用于项目的.NET .sln 文件。如果解决方案不在工作区的根目录中,请按 Ctrl+Shift+P,然后运行“OmniSharp: Select Project”以选择您的 .sln 文件。

    【讨论】:

    • 这导致Error: The reference assemblies for .NETFramework,Version=v4.7.1 were not found,我在网上找到的每个在线资源都建议通过安装单声道并将"omnisharp.useGlobalMono"更改为"always"来解决。我不确定如何在 Mac 上解决它。 .sln 文件正在生成中,位于项目的根目录中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2022-07-26
    • 2022-12-15
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多