标题差不多了。我需要能够解析文档的语法,以找出用户右键单击的内容来执行我的操作。我没有操作该文档,所以我实际上只需要一些可以为我提供语法节点或等效项的东西。我已经使用 C# 和 VB 进行了此操作,但无法弄清楚 VSSDK 或 Roslyn SDK 的任何部分可以为我提供任何类型的 typescript 语法树。
我如何使用 Roslyn 使用其他语言进行此操作的示例,我还有其他可与 FileCodeModels 一起使用的代码,因此如果我能得到它,我也可以使用它。
我实际上认为我需要利用安装到 VS 中的 TypeScript 扩展(创建扩展依赖项),但我不太确定。
Microsoft.VisualStudio.Text.Editor.IWpfTextView textView = GetTextView();
if (textView != null)
{
SnapshotPoint caretPosition = textView.Caret.Position.BufferPosition;
Document document = caretPosition.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
if (document != null)
{
SyntaxToken? token = document.GetSyntaxRootAsync().Result?.FindToken(caretPosition);
}
}
最佳答案
TypeScript 代码既没有 Roslyn SyntaxTree
也没有 FileCodeModel
,部分原因是 TypeScript 引擎本身是用 TypeScript 编写的,因此没有托管表示形式可以讲的。 TypeScript 的 IDE 体验在内部使用了一些 Roslyn,这就是为什么您会看到有一个文档可供您抓取,但那里没有可供使用的语法树。
关于typescript - 如何使用 VSIX 中的 GetSyntaxRoot 获取 Typescript 作为 FileCodeModel 或 (Roslyn) 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37749887/