我正在尝试使用Roslyn分析一些解决方案,并使用标准代码打开解决方案:
var msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(path).Result;
问题是解决方案中的项目未打开,msWorkspace.Diagnostics属性包含一个故障诊断:
使用消息处理文件'csprojPath'时,Msbuild失败:该路径不是合法格式 .
经典解决方案或标准 - 显示相同的故障诊断 .
使用Lib:Microsoft.CodeAnalysis.Workspaces,Version = 2.7.0.0
我检查了一条路 - 一切看起来都很好(测试了其中的5条) .
有人可以帮忙解决这个问题吗?
Upd1 在默认的VS桌面控制台应用程序上测试,出现故障诊断:处理文件'C:\Tests\ClassicConsole\ClassicConsole\ClassicConsole.csproj'时,Msbuild失败并显示消息:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Roslyn \ Microsoft.CSharp.Core.targets:(84,5):无法从程序集"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.Build.Tasks.CodeAnalysis.dll"实例化"Csc"任务 . 请验证是否使用与计算机上安装的Microsoft.Build.Framework程序集相同的Microsoft.Build.Framework程序集版本构建了任务程序集,并确保主机应用程序没有缺少Microsoft.Build.Framework的绑定重定向 . 无法将'Microsoft.CodeAnalysis.BuildTasks.Csc'类型的对象强制转换为'Microsoft.Build.Framework.ITask'类型 . C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Roslyn \ Microsoft.CSharp.Core.targets:(84,5):"Csc"任务已被声明或使用不正确,或者施工期间失败 . 检查任务名称和程序集名称的拼写 .
1 回答
来自this问题的Matt Warren的答案有所帮助:从MsBuild.exe.config向我的app.config添加"bindingRedirect"部分就足够了 .