0

我为我工作室的专有脚本语言编写了 Visual Studio 2008 的基本 LanguageService 扩展。它工作得非常好,我已经实现了一个基本的符号表来跟踪脚本定义和允许 goto 定义功能的调用。

我遇到的问题是我只知道如何解析当前的活动视图,我想扫描整个解决方案的内容,以便用户可以转到他们尚未定义的文件中定义的脚本的定义打开并解析。我已经弄清楚如何生成解决方案中所有文件的列表,但现在我需要创建一个新的 Microsoft.VisualStudio.Package。需要 Microsoft.VisualStudio.TextManager.Interop 的源。IVsTextLines,我不知道如何根据我拥有的文件创建一个新文件。

也许我以错误的方式解决问题,有人可以为我指出一种更好的方法来使 LanguageService 解析文件。

问候,科林

4

1 回答 1

0

四处寻找,我发现 Visual Studio 需要一个新 Source 的原因是它保留了它们的内部列表,它们就像编辑器持有的文本文件的视图。

我得出的结论是,关闭的文件不需要 IVsTextLines 或输入到源文件的 VS 内部列表中,因为我没有直接对它们进行任何操作,在这种情况下我只关心构建一个表符号及其对应的 TextSpan。因此,我为我的解析器创建了一个新的 API,它只接收一个字符串并构建我的 AST,而不是从 ParseRequest 中获取文本,并且只担心我需要记录的特定类型的符号。然后我把它推到了 BackgroundWorker 中。

所以我想我是以错误的方式解决这个问题。虽然看起来很奇怪,但我不能只触发将文件打开到源列表中。

有趣的是,我在他们的支持论坛上向微软提出了这个问题,他们建议我必须购买一些服务和支持计划才能让他们回答我的问题。

于 2011-02-15T23:03:59.343 回答