我需要从给定的SymbolAnalysisContext
访问语法树(完整的源文件文本)。我发现我可以拨打context.Compilation.SyntaxTrees
但是可以从这些中选择哪一个?还有另一种方式吗?
答案 0 :(得分:2)
符号可以在一个或多个SyntaxTrees中定义,也可以在元数据中定义(通过引用)。您可以通过ISymbol.Locations获取所有这些内容,其中包括:
获取源文件中最初定义符号的位置 元数据。某些符号(例如,部分类)可以在多个位置定义。
如果您只对源中定义的内容感兴趣,可以执行以下操作:
var syntaxTrees = from x in context.Symbol.Locations
where x.IsInSource
select x.SourceTree;