Ubuntu 22.04环境Unity配合VS Code时OmniSharp C#无法工作
Kubuntu 22.04下Unity + VS Code IntelliSense失效修复方案
两个场景的报错核心原因有两个:一是Ubuntu官方源自带的Mono 6.8版本过旧,没有集成可用的MSBuild组件;二是Unity生成的C#工程面向.NET Framework,不支持用.NET 6版本的OmniSharp加载,必须用Mono运行时启动OmniSharp。
按以下步骤操作即可修复:
- 先彻底卸载系统源安装的旧版Mono组件,终端执行以下命令:
sudo apt remove --purge mono-complete mono-* msbuild sudo apt autoremove
- 安装适配版本的Mono完整包,安装完成后终端执行
msbuild -version,如果能正常输出版本信息,说明Mono侧的MSBuild组件已经可用,场景1的找不到MSBuild问题就解决了。注意不要使用Ubuntu 22.04官方源自带的Mono 6.8版本,该版本缺少Unity工程加载需要的完整MSBuild组件。 - 打开VS Code的设置,切换到settings.json配置视图,添加/修改以下OmniSharp相关配置:
{ "omnisharp.useModernNet": false, "omnisharp.monoPath": "/usr", "omnisharp.msbuildPath": "/usr/lib/mono/msbuild/Current/bin/MSBuild.dll", "omnisharp.projectLoadTimeout": 120 }
这里必须把omnisharp.useModernNet设为false,开启该选项会用.NET 6运行时启动OmniSharp,无法识别.NET Framework的引用程序集,就是场景2遇到的报错。
- 回到Unity Editor,打开
Edit > Preferences > External Tools配置页:- 外部脚本编辑器选择Visual Studio Code
- 勾选下方所有
Generate .csproj files for分类下的选项(包括本地包、内嵌包、注册表包等) - 点击
Regenerate project files按钮,重新生成所有工程关联文件
- 关闭所有打开该Unity工程的VS Code窗口,删除工程根目录下的
.vscode文件夹,回到Unity双击任意C#脚本重新唤起VS Code,等待OmniSharp后台完成项目加载,IntelliSense就会正常工作。 - 如果仍加载失败,终端执行
echo $MONO_PATH检查环境变量,如果输出指向旧版本Mono的路径,删除对应shell配置文件里的MONO_PATH配置,重启系统后重试即可。
内容的提问来源于stack exchange,提问作者Anany Aadil
相关产品推荐
相关产品推荐

