微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。