关于开放解决方案的Roslyn错误:“使用消息处理文件'pathToFile'时Msbuild失败:该路径不是合法形式。”怎么解决?

时间:2018-03-30 12:22:31

标签: .net roslyn .net-standard roslyn-code-analysis

我正在尝试使用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”任务已被声明或使用不正确,或在施工期间失败。检查任务名称和程序集名称的拼写。

1 个答案:

答案 0 :(得分:0)

来自this问题的Matt Warren的答案有帮助:从myBuild.exe.config向我的app.config添加“bindingRedirect”部分就足够了。