问题描述
我有一个使用Roslyn API来分析单独解决方案中的C#代码的应用程序;一些Visual Studio更新之后,我在我的应用程序中收到此错误:
在处理文件'{单独的解决方案.csproj时,Msbuild失败 文件}”,并显示消息:无法加载类型 程序集中的“ Microsoft.Build.Framework.SdkResultItem” 'Microsoft.Build.Framework,版本= 15.1.0.0,文化=中性, PublicKeyToken = b03f5f7f11d50a3a'。
针对所分析的解决方案中的每个项目显示此错误;我可以在以下位置看到变量ws.Diagnostics
中的错误:
using var ws = MSBuildWorkspace.Create();
ws.LoadMetadataForReferencedProjects = true;
var solution = await ws.OpenSolutionAsync(solutionPath,msbuildLogger: buildLogger,cancellationToken: cancellationToken);
在Visual Studio更新之前,我的代码已经工作;有什么方法可以修复它而无需重新安装Visual Studio?
我曾经尝试过使用 developer命令提示符重新安装Microsoft.Build.Framework参考,但无效。
解决方法
按照this site上的说明使用Microsoft.Build.Locator,并在调用MSBuildWorkspace.Create之前执行此操作。这样可以确保您具有绑定重定向,从而使您的版本保持独立。