从SymbolAnalysisContext获取语法树

时间:2016-06-08 06:44:58

标签: c# roslyn

我需要从给定的SymbolAnalysisContext访问语法树(完整的源文件文本)。我发现我可以拨打context.Compilation.SyntaxTrees但是可以从这些中选择哪一个?还有另一种方式吗?

1 个答案:

答案 0 :(得分:2)

符号可以在一个或多个SyntaxTrees中定义,也可以在元数据中定义(通过引用)。您可以通过ISymbol.Locations获取所有这些内容,其中包括:

  

获取源文件中最初定义符号的位置    元数据。某些符号(例如,部分类)可以在多个位置定义。

如果您只对源中定义的内容感兴趣,可以执行以下操作:

var syntaxTrees = from x in context.Symbol.Locations
                  where x.IsInSource
                  select x.SourceTree;