Unity:Omnisharp 在 VSCode 中找不到引用的项目

Unity: Omnisharp is not finding referenced projects in VSCode

我最近升级到 Unity 2019.3.0f6。当我打开我的一个 c# 文件时,我注意到 UnityEngine.UI 没有被识别为有效的命名空间。这导致我在引用此命名空间时出现红色波浪线。 IntelliSense 也停止工作。这个问题只出现在 VSCode,我的项目在 Unity 中仍然运行良好。

我检查了 Omnisharp 日志,发现一些错误告诉我 Omnisharp 无法找到 UI .csproj 文件和其他几个文件。

[warn]: OmniSharp.MSBuild.ProjectLoader
    The referenced project 'UnityEngine.UI.csproj' does not exist.

什么会导致这种情况?

我已经尝试过的事情:

我今天遇到了完全相同的问题。没有改变任何东西。它刚刚坏了。我认为 VSCode 中的 C# 插件需要更新,但我不能确定。我是 Unity 的新手,但情况似乎确实如此。与此同时,我切换到 VS2019,它似乎在工作。但我更喜欢 VSCode 所以我也在寻找解决方案。

这是 Visual Studio 代码编辑器包 1.1.4 版中的错误。

这些是我为解决此问题所做的步骤:

  1. 在 Unity 编辑器中打开 Window > 包管理器
  2. Select Visual Studio 代码编辑器并单击删除
  3. Select Visual Studio 代码编辑器下的“查看所有版本”
  4. Select 版本 1.1.3 然后点击安装
  5. 重启 VS Code

有论坛对此进行讨论here

实际问题正在处理 Unity Issue Tracker ticket here

更新:

当前Visual Studio代码编辑器包版本1.2.1没有这个bug。

Unity 项目的根目录下有 Assembly-CSharp.csproj 文件。我添加这个来修复错误:

<Reference Include="UnityEngine.UI">
<HintPath>Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath>
</Reference>

在较新版本的 Unity 中,您可能仍然会遇到这种情况,您可以尝试这些答案,但如果使用 VSCode 并重新生成它们;至少对我来说,它消除了由于缺少程序集而导致的错误。也许对于其他问题,您也可以尝试勾选其他人。

当然,我的程序集在 Unity 中设置正确,可以相互引用。只是想为那些在寻找解决方案时可能忽略该设置的人添加这个(我很确定原作者已经这样做了,但我看到一些评论暗示我,并不是每个人都先尝试过)

设置中启用的部分:

VSCode Mac。 Omnisharp 无法加载的问题。 YouTube 用户 Axiom。他解释了如何修复 Omnisharp 加载。在我关注他的视频后,它解决了我的加载问题。 修复。 在你的 C# exstions 下,选择“扩展设置”,然后在搜索栏中添加“useGlobalMono” - 在使用全局单声道下 - 将“自动”更改为“始终”并重新启动 Omnisharp。

视频参考 - https://youtu.be/KJYrRv9cShY