VSCode下提示 UnityEngine.UI 找不到引用的一次原因查找

最近在 Unity 内新增 C# 文件时,发现 VSCode 会提示UnityEngine.UI 找不到引用,但是如果 Unity 将编辑器从 VSCode 改回 VS 后,VSCode 内的引用就奇迹般的正常了

  因此使用 Nodejs 监听文件变化查找原因,使用自己写的小工具对比文件差异:

VSCode下提示 UnityEngine.UI 找不到引用的一次原因查找

  在相关 csproj 文件内搜索 Assembly>false 发现是 VS 打开工程后会很果断地删除下列行:

     <ReferenceOutputAssembly>false</ReferenceOutputAssembly>

  反之,如果 Unity 新增一个 C# 文件,VSCode 就会自动在 csproj 里面加入这行,果然同门师兄弟,竞争很激烈。

回到 csproj 里面,是没有任何 UnityEngine.UI 模块引用的,毫无疑问,是放在 dll 里面了,而再结合上面这行的字面理解,应该就是不到 dll 里面找引用的意思,因此找不到 UnityEngine.UI 也就是顺理成章的事了。

 

解决方式:


1:vscode 安装1.1.3版本

    这个网上搜到很多解决方式是这个,没有具体尝试过,应该可行,大概率是 VSCode 自己修复了对 相关 Unity 引用的正确处理

 

2:Preferences => externalTools => VS 然后点击任意脚本进入 VS

   如果愿意用 VSCode 的话,这种就是让 VS 去改 cpsproj,就是时间太久,知道原因再这么去改就显得对自己的电脑性能很自信

 

 3:手动添加下列引用到 csproj

     <Reference Include="UnityEngine.UI">

         <HintPath>Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath>

    </Reference>

     不难得出这种解决方式,不知道有没有副作用

 

  4:删除 csproj 中的 <ReferenceOutputAssembly>false</ReferenceOutputAssembly>

上一篇:解决从旧格式的csproj迁移到新格式的csproj格式AssemblyInfo文件值重复问题...


下一篇:奇怪的F12无法转到定义而是转到元数据的问题的解决