C# 无法启动OmniSharp,因为Mono版本>=6.4.0是必需的
我使用VSCode进行Unity开发。不幸的是,我的C#代码在VSCode中没有任何智能感知。根本原因似乎是OmniSharp未能找到Mono,因为VSCode中的OmniSharp日志读取: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版本中工作得非常完美。第二天,不知什么原因,它坏了,没有为任何项目工作,直到深夜,
“[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
包含指向两个版本Mono的路径,echo$PATH
首先出现/usr/local/bin/Mono
输出Microsoft(R)针对Mono的构建引擎版本16.6.0和msbuild
输出哪个msbuild
/usr/local/bin/msbuild
输出dotnet--info
.NET核心SDK
版本:3.1.201
"omnisharp.loggingLevel": "debug",
"omnisharp.monoPath": "/usr/local/bin/mono",
"omnisharp.useGlobalMono": "always"
我尝试过的事情:
- 降级/升级VSCode的C#插件(包括1.23.9的最新版本)
- 降级Unity的Visual Studio代码编辑器包
- 将VSCode切换为使用手动安装在
上的Mono 6.12.0 I版本(并卸载/Library/Frameworks/Mono.framework/Versions/Current/Commands/
-已安装版本)brew
- 在VSCode中取消设置
设置(这会导致关于.NET SDK的另一个错误)omnisharp
- 删除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配置一百万次之后,这才是真正的解决方案。非常感谢。