Ubuntu下Unity开发VS Code弹出OmniSharp依赖Mono完整安装错误求助
问题背景
在Ubuntu 22.04.1 LTS(64位,GNOME 42.4)环境下,使用Unity 2021.3.13f1搭配VS Code开发游戏,此前一切正常。安装并卸载LXDE桌面环境后,每次打开项目都会弹出以下错误:
OmniSharp requires a complete install of Mono (including MSBuild) to provide languages services when
omnisharp.useModernNetis disabled in Settings. Please install the latest Mono and restart.
已安装工具及版本:
- VS Code C#扩展
- .NET SDK 6.0.110
- Mono 6.12.0.182
- MSBuild 17.0.0 for Mono
当前VS Code相关配置:
"omnisharp.path": "latest", "omnisharp.useModernNet": false, "omnisharp.monoPath": "/usr/bin/mono"
解决步骤
1. 修复MSBuild与Mono的关联
卸载LXDE可能破坏了系统中MSBuild与Mono的关联,通过以下命令重新选择正确的MSBuild版本:
sudo update-alternatives --config msbuild
在弹出的选项中,选择路径包含/usr/lib/mono/msbuild的版本(对应Mono配套的MSBuild)。
2. 重新安装完整的Mono包
现有Mono安装可能因桌面环境切换导致文件缺失或损坏,卸载后重新安装官方完整包:
# 卸载现有Mono及相关组件 sudo apt purge --auto-remove mono-runtime mono-devel msbuild # 添加Mono官方软件源 sudo apt install apt-transport-https dirmngr sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-jammy main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list # 更新源并安装完整Mono包 sudo apt update sudo apt install mono-complete msbuild
3. 清除OmniSharp缓存并重置扩展
VS Code的OmniSharp缓存可能残留旧配置,导致识别异常:
- 完全关闭VS Code
- 执行以下命令删除缓存目录:
rm -rf ~/.vscode/extensions/ms-dotnettools.csharp-*/.omnisharp rm -rf ~/.cache/OmniSharp - 重新打开VS Code,等待OmniSharp完成初始化
4. 切换至ModernNet模式(Unity 2021+推荐)
Unity 2021.3版本已支持.NET 6,可尝试启用ModernNet模式,绕过Mono依赖问题:
修改VS Code的settings.json:
"omnisharp.useModernNet": true, "omnisharp.path": "latest"
删除omnisharp.monoPath配置项,让OmniSharp自动使用系统中的.NET SDK。
5. 验证环境变量配置
确保Mono和MSBuild的路径已加入系统环境变量:
echo $PATH | grep -E "/usr/bin/mono|/usr/lib/mono/msbuild"
如果输出为空,将路径添加到Shell配置文件(如~/.bashrc或~/.zshrc):
echo 'export PATH="$PATH:/usr/bin/mono:/usr/lib/mono/msbuild/17.0/bin"' >> ~/.bashrc source ~/.bashrc
内容的提问来源于stack exchange,提问作者Salah Rashad

