OmniSharp.MSBuild报错尝试更新未加载的Unity项目,重装多版.NET SDK无效
报错根因定位
从给出的错误日志、csproj文件结构、项目路径特征,可直接锁定三类诱因,和独立安装的.NET SDK版本无直接关联,无需重复调整SDK安装版本:
- 当前使用的csproj文件结构残缺,缺少必要的编译依赖节点
- 项目路径包含非ASCII特殊字符,触发OmniSharp的路径解析错误
- OmniSharp未匹配到Unity内置的MSBuild运行时,导致项目初始加载失败后陷入更新死循环
分层解决方案
- 修复残缺的csproj文件
你当前贴出的csproj文件存在两处硬伤:- 缺少末尾闭合标签
</Project> - 缺失Unity项目必需的程序集引用、MSBuild目标导入节点,无法被正常解析
操作:打开Unity编辑器,依次进入Edit > Preferences > External Tools,点击Regenerate project files,等待生成完整的csproj文件,过程中不要手动修改自动生成的项目文件。
- 缺少末尾闭合标签
- 调整项目存储路径
你的项目路径包含带变音符号的非ASCII字符Programación,旧版OmniSharp的路径解析逻辑会将这类路径判定为无效路径,直接跳过加载流程。
操作:将整个Unity项目文件夹移动到纯英文无特殊符号的路径下,例如C:\UnityProjects\FirstTutorial,确保路径中不存在任何变音字符、中文、空格。 - 配置OmniSharp的MSBuild运行时路径
独立安装的.NET SDK不会被OmniSharp自动识别为Unity项目的编译依赖,OmniSharp加载Unity 2020.3生成的非SDK风格csproj时,必须匹配Unity内置的Roslyn/MSBuild运行时。
操作:- 打开VS Code设置,启用
omnisharp.msbuild.useLegacySdkResolver选项 - 新增配置项
omnisharp.msbuild.externalPath,值填写本地Unity 2020.3安装目录下的Roslyn工具路径,例如C:\Program Files\Unity\Hub\Editor\2020.3.40f1\Editor\Data\Tools\Roslyn
- 打开VS Code设置,启用
- 关闭OmniSharp自动更新死循环
报错中Attempted to update project that is not loaded的触发逻辑是:项目初始加载失败后,OmniSharp持续触发项目更新请求,形成无限报错循环。
操作:在VS Code的settings.json中新增配置"omnisharp.enableAutoUpdate": false,重启OmniSharp服务后重新打开项目。
内容的提问来源于stack exchange,提问作者Diegoa87
相关产品推荐
相关产品推荐

