MSBuildWorkspace:解决方案在Visual Studio 2019上不包含任何文档并且没有任何项目

时间:2019-05-13 01:43:07

标签: c# msbuild roslyn code-analysis

我想使用roslyn创建一个分析器,但是首先我需要从目标解决方案中获取所有文档(.cs文件)。

我使用了Josh Varty教程中的以下代码

        string solutionPath = @"C:\Users\hamza\Desktop\TestSolution\TestSolution.sln";
        var msWorkspace = MSBuildWorkspace.Create();

        var solution = msWorkspace.OpenSolutionAsync(solutionPath).Result;
        foreach (var project in solution.Projects)
        {
            Console.WriteLine(project);
            foreach (var document in project.Documents)
            {
                Console.WriteLine(project.Name + "\t\t\t" + document.Name);
            }
        }

但是结果为空,我没有任何文档或项目。

MSBuildWorkspace版本为 3.0.0 ,我也尝试了 2.10.0 ,但结果是相同的。

有人对此有想法吗?或如何解决?

1 个答案:

答案 0 :(得分:0)

经过更多研究,我发现了有关Github的有用文章: https://github.com/dotnet/roslyn/issues/24767

此代码工作正常

 var projectPath = @"C:\Users\hamza\Desktop\TestSolution\TestSolution.sln";
        using (var workspace = MSBuildWorkspace.Create())
        {
            var solution = workspace.OpenSolutionAsync(projectPath).Result;

            foreach (var project in solution.Projects)
            {
                foreach (var document in project.Documents)
                {
                    Console.WriteLine(project.Name + "\t\t\t" + document.Name);
                }
            }
        }

最后为了使一切正常,我添加了此程序包:

Install-Package Buildalyzer.Workspaces-版本2.2.0