使用msbuildworkspace打开解决方案会在没有详细信息的情况下发出诊断错

我正在尝试使用MSBuildWorkspace分析Roslyn的解决方案。 该解决方案是一种新的解决方案,其中包含2个类库项目,一个引用另一个。

它们是在Visual Studio 2017中创建的.Net 4.6.2。

当我打开解决方案时,我在workspace.Diagnostics中收到两个通用错误,两者都是:处理文件’ PathToProject时Msbuild失败’在诊断或输出窗口中没有更多内容,表明它为什么处理项目文件失败。

打开解决方案的代码:

namespace RoslynAnalyse { class Program { static void Main(string[] args) { LocalAnalysis(); } private static void LocalAnalysis() { var workspace = MSBuildWorkspace.Create(); var solution = workspace.OpenSolutionAsync(@"D:\Code\Roslyn\RoslynAnalyse\SolutionToAnalyse\SolutionToAnalyse.sln").Result; var workspaceDiagnostics = workspace.Diagnostics; } } } 

Microsoft.CodeAnalysis的版本是2.0.0.0。 有没有人知道为什么MSBuild失败了,我怎么能获得更多信息?

当MSBuildWorkspace无法以这种方式打开项目或解决方案时,几乎总是因为使用MSBuildWorkspace的应用程序不包含msbuild.exe.config中包含的相同绑定重定向。

MSBuild使用绑定重定向来允许任务(通常已使用可能不同版本的msbuild API库编译C#代码)全部使用当前的msbuild API。 否则,msbuild会导致运行时加载失败。

解决方案是将app.config文件添加到项目中,并将绑定重定向(msbuild.exe.config文件的assemblyBinding部分)复制到您的文件中。