【发布时间】:2021-06-07 15:25:48
【问题描述】:
虽然在DiagnosticAnalyzer 中很容易获得所需的语法节点(因为它会传递给您),但尚不清楚如何在其他上下文中获取 Roslyn 中的语法节点。例如,Roslyn 语法可视化器(源似乎不可用)如何获取光标下的语法节点?
我想要做的是实现一个命令,该命令可以利用 Roslyn 语法树来确定调用命令时光标的位置。我一直找不到以这种方式使用 Roslyn。
【问题讨论】:
-
也许 Roslyn 只是使用标准的标签和分类系统? msdn.microsoft.com/en-us/library/…
-
@MickyDuncan 它有自己的位置和范围表示 - github.com/dotnet/roslyn/blob/master/src/Compilers/Core/… (很可能在两者之间进行映射,但我希望有一个正确的方法来做到这一点。 ..)
-
有趣的是,我也在调查同样的事情。只是出于好奇,您的扩展程序是做什么的?
-
@petrk。我正在实现与 ReSharper 在您点击 Alt-End 时所做的非常相似的事情 - 如果插入符号位于接口成员或虚拟成员上,它将导航到实现,或者如果有多个实现则显示一个列表。
-
@IanGriffiths:听起来不错。我正在实施类似 ReSharper 的重新排列代码元素功能(上移/下移和左移/右移)
标签: c# visual-studio