Neovim中配置Omnisharp适配.NET Core 5.0.17的问题求助
解决Neovim中Omnisharp适配.NET 5.0.17的版本兼容问题
核心问题定位
你遇到的Client 1 quit with exit code 150错误,本质是Omnisharp默认启用的现代.NET模式(依赖.NET 6+)与本地.NET 5.0.17环境不兼容。即使设置了useModernNet = false,也可能因配置未生效、Omnisharp版本不匹配或Mono环境未正确关联导致问题持续。
针对性排查与修复步骤
1. 确认useModernNet = false配置是否真正生效
检查lsp-installer.lua是否正确引入omnisharp配置文件,确保配置传递给客户端:
-- 示例正确引入方式(根据你的目录结构调整) require("lspconfig").omnisharp.setup({ settings = require("lsp.settings.omnisharp"), -- 其他配置项... })
同时确认omnisharp.lua内容无误:
return { useModernNet = false, -- 自动检测失败时可手动指定Mono路径 monoPath = "/usr/bin/mono" -- 对应Manjaro默认安装路径 }
2. 检查Omnisharp版本兼容性
部分新版Omnisharp默认强制依赖现代.NET,可手动安装支持Mono模式的旧版本(如v1.39.8及之前版本),并在配置中指定路径:
require("lspconfig").omnisharp.setup({ cmd = { "/path/to/omnisharp/run", "--languageserver", "--hostPID", tostring(vim.fn.getpid()) }, settings = { useModernNet = false } })
3. 验证Mono与msbuild环境完整性
在终端执行以下命令,确认环境正常:
mono --version msbuild --version
若msbuild无法调用,需确保mono-msbuild路径加入系统环境变量,或在配置中手动指定:
settings = { useModernNet = false, msbuildPath = "/usr/bin/msbuild" -- 对应Manjaro默认路径 }
4. 分析Omnisharp启动日志
在Neovim中执行:LspLog,重点查看Omnisharp启动段日志,确认:
- 是否输出
Using Mono runtime(验证Mono模式已启用) - 是否存在msbuild加载失败、路径错误的提示
- 是否仍在尝试加载.NET 6相关组件
额外注意事项
- Manjaro中Mono默认路径为
/usr/bin/mono,msbuild默认路径为/usr/bin/msbuild,若自定义安装需调整对应路径 - 确保终端执行
dotnet --version能正常返回5.0.17,验证.NET 5环境配置无误
内容的提问来源于stack exchange,提问作者MrRobot
相关产品推荐
相关产品推荐

