OmniSharp 失败:无法创建任务“GetReferenceNearestTargetFrameworkTask”

问题描述

我正在使用带有 C# 扩展的 VSCode(检查版本 - 它是最新的 - 1.23.11)并且对它非常满意。 然而,今天它突然停止工作(没有智能感知或导航)。 我检查了 OmniSharp 的日志,发现以下错误

Failed to create instance of task "GetReferenceNearestTargetFrameworkTask" 
from "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.Build.Tasks.dll".
Task assembly should be built with the same version of assembly Microsoft.Build.Framework,which is installed on computer,and in host should be set binding redirection for Microsoft.Build.Framework.
Failed to cast type "NuGet.Build.Tasks.GetReferenceNearestTargetFrameworkTask" to type "Microsoft.Build.Framework.ITask".

这可能不是准确的文本 - 我得到了本地化的消息并进行了翻译

然后我检查了哪些依赖项有“NuGet.Build.Tasks.dll”——它有“Microsoft.Build.Framework,4.0.0”。 我检查了哪些绑定重定向具有“Omnisharp.exe”。 'OmniSharp.exe.config' 包含:

      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.1.0.0" />
      </dependentAssembly>

因此,存在重定向

我在“Omnisharp”中打开了“调试”日志,看看它是否加载了正确的“Microsoft.Build.Framework”,是的,它加载了正确的。

我什至试图在“Microsoft.CSharp.targets”中注释掉“GetReferenceNearestTargetFrameworkTask” - 然后它以类似的方式失败,但用于另一种类型的任务。

谁能帮我处理它,或者提供一些想法 - 要检查什么? 最奇怪的是昨天晚上它运行得很好,但今天失败了,我找不到任何可以破坏它的更新迹象。

UPD 我设法克服了这个问题 - 从 GAC 中删除Microsoft.Build.Framework 程序集(它在 4.0 版本中存在)。在设置了 OmniSharp.exebindingRedirect 进程中工作时,我仍然不明白为什么要尝试它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)