在命令处理程序中的游标处获取Roslyn SyntaxNode

时间:2015-07-22 06:56:23

标签: c# visual-studio

虽然很容易在DiagnosticAnalyzer中获取您需要的语法节点(因为它会传递给您),但是不清楚如何在Roslyn中获取语法节点在其他情况下。例如,Roslyn语法可视化工具(源代码似乎不可用)如何获取光标下的语法节点?

我想要做的是实现一个命令,该命令可以使用Roslyn语法树来调用命令所在位置的光标位置。我无法以这种方式找到使用Roslyn。

2 个答案:

答案 0 :(得分:1)

首先,您需要获取当前的文本缓冲区。这有点牵扯,我个人使用Mads Kristensen在他的开源WebEssentials中编写的代码。请参阅ProjectHelpers.cs中的GetCurentTextBuffer()

其次,要检索适当的Roslyn结构(例如Document),您可以使用Roslyn中的一种扩展方法(请参阅Microsoft.CodeAnalysis.Text.Extensions)。这一点受到blog post by Josh Varty的启发。

从那里,抓住Roslyn文档的SyntaxTree并在插入位置找到节点非常简单。

答案 1 :(得分:0)

这是 Sytax Visualizer 的 github 源代码链接