从 TextLine 获取评论

Get comment from TextLine

我有

var sourceText = SourceText.From(filestream);
var firstLine = sourceText.Lines.FirstOrDefault();

这给我第一行源代码作为 TextLine。我需要将评论解析为字符串,但我想为此使用 Roslyn。如何使用 Roslyn 从 TextLine 中提取单行注释?

您需要将文本解析成语法树,然后搜索您想要的那种琐事。您有多种语法类型,包括 SingleLineCommentTrivia, MultiLineCommentTrivia, ...:

var tree = CSharpSyntaxTree.ParseText(sourceText, path: filename);
var root = tree.GetCompilationUnitRoot();

var comment = root.DescendantTrivia()
    .OfType<SyntaxTrivia>()
    .FirstOrDefault(s=> s.IsKind(SyntaxKind.SingleLineCommentTrivia)) // Here you decide what you want to filter on
    .ToFullString();

有关详细信息,请参阅 https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp.syntaxkind?view=roslyn-dotnet