C# 无法启动OmniSharp,因为Mono版本>=6.4.0是必需的

C# 无法启动OmniSharp,因为Mono版本>=6.4.0是必需的,c#,unity3d,visual-studio-code,mono,omnisharp,C#,Unity3d,Visual Studio Code,Mono,Omnisharp,我使用VSCode进行Unity开发。不幸的是,我的C#代码在VSCode中没有任何智能感知。根本原因似乎是OmniSharp未能找到Mono,因为VSCode中的OmniSharp日志读取: “[ERROR]错误:无法启动OmniSharp,因为需要Mono版本>=6.4.0。” 这是我多次遇到的问题。在2021年3月4日和之前的几个月里,一切都很正常,IntelliSense在多个Unity项目和多个Unity版本中工作得非常完美。第二天,不知什么原因,它坏了,没有为任何项目工作,直到深夜,

我使用VSCode进行Unity开发。不幸的是,我的C#代码在VSCode中没有任何智能感知。根本原因似乎是OmniSharp未能找到Mono,因为VSCode中的OmniSharp日志读取:
“[ERROR]错误:无法启动OmniSharp,因为需要Mono版本>=6.4.0。”

这是我多次遇到的问题。在2021年3月4日和之前的几个月里,一切都很正常,IntelliSense在多个Unity项目和多个Unity版本中工作得非常完美。第二天,不知什么原因,它坏了,没有为任何项目工作,直到深夜,在尝试了一系列的事情后,我才能够让它工作。今天早上我又犯了一个错误。每次从它工作到它坏掉,除了重新启动电脑外,我没有做任何改变

  • 马科斯莫哈韦10.14.6
  • Unity 2020.2.0f1+Visual Studio代码编辑器1.2.3 Unity软件包
  • VSCode 1.54.1+C#1.23.0 VSCode插件
  • Mono 6.12.0.122通过
    brew安装在
    /usr/local/bin/Mono
  • Mono 6.12.0也手动安装在
    /Library/Frameworks/Mono.framework/Versions/Current/Commands/
  • 我的终端和VSCode的终端中的哪个mono
    输出
    /usr/local/bin/mono
  • mono--version
    在两个终端输出中
    mono-JIT编译器版本6.12.0.122
  • echo$PATH
    包含指向两个版本Mono的路径,
    /usr/local/bin/Mono
    首先出现
  • msbuild
    输出Microsoft(R)针对Mono的构建引擎版本16.6.0
    哪个msbuild
    输出
    /usr/local/bin/msbuild
  • dotnet--info
    输出
    .NET核心SDK
    版本:3.1.201
在VSCode的设置中,我设置了以下内容:

"omnisharp.loggingLevel": "debug",
"omnisharp.monoPath": "/usr/local/bin/mono",
"omnisharp.useGlobalMono": "always"
我尝试过的事情:

  • 降级/升级VSCode的C#插件(包括1.23.9的最新版本)
  • 降级Unity的Visual Studio代码编辑器包
  • 将VSCode切换为使用手动安装在
    /Library/Frameworks/Mono.framework/Versions/Current/Commands/
    上的Mono 6.12.0 I版本(并卸载
    brew
    -已安装版本)
  • 在VSCode中取消设置
    omnisharp
    设置(这会导致关于.NET SDK的另一个错误)
  • 删除Unity的
    .csproj
    .sln
    文件,以便可以重新生成它们
  • 手动告诉Unity重新生成所有
    .csproj
    文件
  • 重新启动
  • 查看许多论坛帖子和有关此主题的堆栈溢出问题,以寻求解决方案

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

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

我可以通过将Visual Studio代码降级到1.52.1 at并关闭VS代码中的自动更新来解决此问题。OmniSharp现在正在毫无例外地工作。似乎根本原因可能在于VS代码1.54(或可能是1.53)

我也有同样的问题(没有智能感知)。尝试了这里和其他地方列出的许多东西。按照大多数地方的建议,将“ominsharp.useGlobalMono”改为“从不”,并在提示时重新启动omnisharp,但没有任何更改。然而,我得到了一个以前没有得到的错误(没有保存它,但它是一条消息,说明mono(?)的旧版本不受支持)

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

这会导致
错误:找不到.NETFramework,Version=v4.7.1的参考程序集
,我在网上找到的每个在线资源都建议通过安装mono并将
“omnisharp.useGlobalMono”
更改为
“always”
来解决此问题。我不知道如何在Mac上解决它,否则。正在生成
.sln
文件,该文件位于项目的根目录中。这是正确的解决方案。我以前也有过同样的问题,记不起它的确切版本。本周,当vscode自动更新为1.54时,omnisharp再次失败。降级到1.52修复了它。在检查了我的mono、.net版本、$PATH和Omnisharp配置一百万次之后,这才是真正的解决方案。非常感谢。