虽然很容易在DiagnosticAnalyzer
中获取您需要的语法节点(因为它会传递给您),但是不清楚如何在Roslyn中获取语法节点在其他情况下。例如,Roslyn语法可视化工具(源代码似乎不可用)如何获取光标下的语法节点?
我想要做的是实现一个命令,该命令可以使用Roslyn语法树来调用命令所在位置的光标位置。我无法以这种方式找到使用Roslyn。
答案 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 源代码链接