我正在尝试使用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 \”实例化“Csc”任务Microsoft.Build.Tasks.CodeAnalysis.dll”。请验证是否使用与计算机上安装的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”任务已被声明或使用不正确,或在施工期间失败。检查任务名称和程序集名称的拼写。
答案 0 :(得分:0)
来自this问题的Matt Warren的答案有帮助:从myBuild.exe.config向我的app.config添加“bindingRedirect”部分就足够了。