无法使用代码分析器类打开解决方案

时间:2017-04-05 19:49:01

标签: c# roslyn roslyn-code-analysis

我尝试使用Microsoft提供的软件包构建一个简单的程序来进行静态代码分析。所以我想打开解决方案然后通过代码打开项目,然后获取所有文档并使用我的方法进行分析。

这是我的方法,我在其他地方打电话,我仔细检查了解决方案路径是否正确。您可以看到我使用的命名空间。

using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.MSBuild;

 public class Fixer
{
 public Fixer(string solutionPath)
        {
           using (var workspace = MSBuildWorkspace.Create())
            {
                _solution = workspace.OpenSolutionAsync(_solutionPath).Result;
            }
        }
}

之后我想

public IEnumerable<Document> GetDocuments(Solution solution)
        {
            foreach (var projectId in solution.ProjectIds)
            {
                var project = solution.GetProject(projectId);
                foreach (Document document in project.Documents)
                {
                    if (document.SupportsSyntaxTree)
                        yield return document;
                }
            }
        }

public IEnumerable<MethodDeclarationSyntax> GetMethods(IEnumerable<Document> documents)
            {
                return documents.SelectMany(p => p.GetSyntaxRootAsync().Result.DescendantNodes().OfType<MethodDeclarationSyntax>());
            }

主要问题是它根本不是开放的解决方案。当我检查工作区对象时。有诊断属性,并说

{[Failure] Cannot open project '.\RunningDiagnostics.csproj' because the language 'C#' is not supported.}

对于该解决方案中的所有项目。

我尝试更新我使用的nuget包。没啥事儿。主要问题是什么? 我们将非常感谢指导。

谢谢。

0 个答案:

没有答案