VS Code配合Unity使用时OmniSharp加载异常、自动补全失效如何修复
问题场景
在VS Code中打开Unity脚本时,弹出错误提示 Some projects have trouble loading. Please review the output for more details.,点击Show Output可查看OmniSharp运行日志,核心报错为项目依赖的.NET Framework引用程序集缺失,此时VS Code内Unity代码自动补全完全失效,但编写的代码可以在Unity编辑器中正常运行。
对应运行日志核心片段:
Starting OmniSharp server at 7/5/2022, 6:09:26 PM Target: /Users/angelalindsay/Desktop/Unity Projects/First Unity Game/First Unity Game/First Unity Game.sln OmniSharp server started with .NET 6.0.301 ... [fail]: OmniSharp.MSBuild.ProjectLoader This project targets .NET version that requires reference assemblies that are not installed (e.g. .NET Framework). [warn]: OmniSharp.MSBuild.ProjectManager Failed to load project file '/Users/angelalindsay/Desktop/Unity Projects/First Unity Game/First Unity Game/Assembly-CSharp.csproj'.
问题根因
Unity 2021及更早版本的C#项目默认基于.NET Framework框架开发,而新版VS Code C#扩展自带的OmniSharp默认启用.NET 6现代化运行模式,该模式不内置.NET Framework的引用程序集,同时本地未安装Mono提供的兼容实现,最终导致项目加载失败,所有依赖项目解析的代码提示功能失效。
修复步骤
按顺序操作即可解决问题:
- 下载安装最新稳定版Mono,macOS环境运行对应安装包完成全流程安装,安装结束后重启电脑保证环境变量正常生效。
- 打开VS Code,使用快捷键
Command + ,唤起设置面板,在顶部搜索框输入omnisharp.useModernNet,取消该配置项的勾选,将参数值设置为false。 - 按下快捷键
Command + Shift + P唤起命令面板,输入并执行OmniSharp: Restart OmniSharp,重启OmniSharp服务。 - 等待OmniSharp进度条走完,完成项目重新加载后,之前的加载报错会自动消失,代码自动补全、语法校验、跳转定义等功能全部恢复正常。
兜底排查方案
如果以上操作完成后问题仍未解决,按以下点逐一排查:
- 回到Unity编辑器,打开
Preferences > External Tools设置页,确认外部脚本编辑器选中的是当前正在使用的VS Code版本,点击页面下方的Regenerate project files按钮重新生成项目的sln、csproj配置文件,回到VS Code再次重启OmniSharp即可。 - 如果问题出现在C#扩展自动更新之后,可以在VS Code扩展面板找到官方C#扩展,点击扩展卡片旁的下拉箭头,选择
Install Another Version,回退到1.24.x的稳定版本后重启VS Code重试。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

