Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read XML documentation comments using Roslyn

Tags:

I would like to be able to read XML documentation comments while parsing C# source code using Roslyn.

/// <summary> /// Documentation... /// </summary> 

I tried setting the ParseDocumentationComments in the ParseOptions, but it doesn't seem to have an effect?

var parseOptions = ParseOptions.Default.WithParseDocumentationComments(true); SyntaxTree unit = SyntaxTree.ParseFile(file, parseOptions); 
like image 383
Bjorn Reppen Avatar asked Apr 02 '13 12:04

Bjorn Reppen


Video Answer


1 Answers

You'll need to either:

  1. Look at the LeadingTrivia of the syntax that contains the XML doc comments
  2. Construct a Compilation, find the Symbol that has the XML doc comment and use the GetDocumentationComment() method on it.

A complete example:

using Roslyn.Compilers.CSharp; using System; using System.Linq;  class Program {     static void Main(string[] args)     {         var tree = SyntaxTree.ParseText(@" /// <summary>This is an xml doc comment</summary> class C { }");         var classNode = (ClassDeclarationSyntax)tree.GetRoot().Members.First();         var trivia = classNode.GetLeadingTrivia().Single(t => t.Kind == SyntaxKind.DocumentationCommentTrivia);         var xml = trivia.GetStructure();         Console.WriteLine(xml);          var compilation = Compilation.Create("test", syntaxTrees: new[] { tree });         var classSymbol = compilation.GlobalNamespace.GetTypeMembers("C").Single();         var docComment = classSymbol.GetDocumentationComment();         Console.WriteLine(docComment.SummaryTextOpt);     } } 
like image 58
Kevin Pilch Avatar answered Sep 16 '22 14:09

Kevin Pilch