typescript - 如何使用 VSIX 中的 GetSyntaxRoot 获取 Typescript 作为 FileCodeModel 或 (Roslyn) 文档

标签 typescript visual-studio-2015 roslyn visual-studio-extensions roslyn-code-analysis

标题差不多了。我需要能够解析文档的语法,以找出用户右键单击的内容来执行我的操作。我没有操作该文档,所以我实际上只需要一些可以为我提供语法节点或等效项的东西。我已经使用 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/

相关文章:

c# - VS 2015 文件保存时 CPU 使用率高

c# - 从 Windows 服务以编程方式锁定工作站

c# - 从新节点获取符号信息

css - 如何在 HTML 表格中将参数从 Angular 传递到 CSS

angularjs - 成功解决后带有 typescript 的 Protractor 找不到模块 'protractor'

angular - 在 Angular 6 的两个地方使用非常相似的 for 循环是不好的做法吗?

c# - 新的 C# 6 对象初始值设定项语法?

typescript - 使用 typescript 和 karma 进行单元测试

visual-studio-2015 - Visual Studio 2015。如何查找具有特定类的较少文件

c# - C# 中的闭包分配