Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用msbuildworkspace打开解决方案会出现诊断错误,但不提供详细信息_C#_Msbuild_Roslyn_Roslyn Code Analysis - Fatal编程技术网

C# 使用msbuildworkspace打开解决方案会出现诊断错误,但不提供详细信息

C# 使用msbuildworkspace打开解决方案会出现诊断错误,但不提供详细信息,c#,msbuild,roslyn,roslyn-code-analysis,C#,Msbuild,Roslyn,Roslyn Code Analysis,我正试着和Roslyn一起分析解决方案,用MSBuildWorkspace。 该解决方案是一个新的解决方案,其中包含两个类库项目,一个引用另一个 它们是在Visual Studio 2017、.Net 4.6.2中创建的 打开解决方案时,我在工作区中收到两个一般错误。诊断,都是: 处理文件“PathTopProject”时Msbuild失败 “诊断”或“输出”窗口中没有更多内容可以说明它无法处理项目文件的原因 打开解决方案的代码: namespace RoslynAnalyse {

我正试着和Roslyn一起分析解决方案,用MSBuildWorkspace。 该解决方案是一个新的解决方案,其中包含两个类库项目,一个引用另一个

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

打开解决方案时,我在工作区中收到两个一般错误。诊断,都是: 处理文件“PathTopProject”时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使用绑定重定向允许任务(通常已编译的C代码使用可能不同版本的MSBuild API库)全部使用当前的MSBuild API。否则,msbuild将获取运行时加载失败


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

如果您还没有在上提交错误,则最好在上提交错误。数周来,您一直在尝试寻找此问题的解决方案。虽然我以前遇到过您的答案,但我误读了它并犯了错误,使用了与msbuild.exe.config文件中不同的版本。刚刚将重新绑定复制到我自己的app.config中,诊断错误都消失了。你是我今天的冠军:-D@Matt沃伦的回答对我很有用。另外一点:MsBuild可能有相当多的版本,具有各种“bindingRedirect”元素。选择一个时要小心。在我的例子中,C:\ProgramFiles(x86)\MSBuild\14.0\Bin\MSBuild.exe.config是正确的。