小编Jiř*_*nec的帖子

从 MetadataReference 获取 ISymbol 的文档

我最近开始学习 Roslyn 代码分析。我浏览了提供的示例代码。我的问题如下:

有没有办法获取从引用库加载的符号的 XML 文档注释?

我使用的示例代码是FAQ(7). 目标是获得函数的文档注释Console.Write

    public void GetWriteXmlComment()
    {
        var project1Id = ProjectId.CreateNewId();
        var document1Id = DocumentId.CreateNewId(project1Id);

        var mscorlib = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);

        var solution = new AdhocWorkspace().CurrentSolution
            .AddProject(project1Id, "Project1", "Project1", LanguageNames.CSharp)
            .AddMetadataReference(project1Id, mscorlib);

        var declarations = SymbolFinder.FindDeclarationsAsync(solution.Projects.First(), "Write", true).Result;

        var decFirst = declarations.First();
        var commentXml = decFirst.GetDocumentationCommentXml();
    }
Run Code Online (Sandbox Code Playgroud)

示例代码适用于某些方法 - 它获取文档文本。但对于诸如 之类的方法Console.Write,它使用NullDocumentationProvider并因此返回空字符串。

更新

我发现我可以加载MetadataReference实例TestDocumentationProvider如下:

        var mscorlib = MetadataReference.CreateFromFile(typeof(object).Assembly.Location,
            default(MetadataReferenceProperties), new TestDocumentationProvider());
Run Code Online (Sandbox Code Playgroud)

其中TestDocumentationProvider实现Microsoft.CodeAnalysis DocumentationProvider …

c# analysis roslyn roslyn-code-analysis

5
推荐指数
1
解决办法
836
查看次数

标签 统计

analysis ×1

c# ×1

roslyn ×1

roslyn-code-analysis ×1