31

我想在 Visual Studio 中编写智能感知的补充。

是否可以扩展,从我的研究中我没有找到任何关于智能扩展的示例或文档。

如何让智能感知显示如下所示的简单 HelloWorld 消息(其中 hello world 在运行时添加到 String 的智能感知):

在此处输入图像描述

4

1 回答 1

34

因此,在 Visual Studio 2010 及更高版本中,您想要使用的可扩展性 API 位于 Microsoft.VisualStudio.Languages.IntelliSense 命名空间下。在较高级别上,您希望 MEF 导出 aICompletionSourceProvider它将提供您需要的项目。这里这里有两篇很好的博客文章演示了基本技术。

如果你想让你的截图成为现实,你会遇到两个问题。(这就是我要求这个场景的原因,因为我在这里的建议会改变。)首先,这种方法在法律上不允许您附加到现有的完成集,而是提供一个新的完成集。在 UI 中,这显示为两个选项卡,就像 Visual Basic 编辑器中的 Common/All 选项卡一样。这是当前 API 的限制。您可以尝试修改您现有的完成集之一,AugmentCompletionSource但我不知道这是否可行。无论如何,它绝对不受支持。

其次,很难知道何时何地推荐东西。在您的示例中,您说的是“IntelliSense for string”。可悲的是,VS 中没有任何 API(当前)可以让您知道点之前的内容是什么。您可以做一些简单的启发式或尝试为您的场景实现一些足够好™ 的解析器,但您现在必须接受您不会得到完美的结果。

Roslyn项目旨在解决第二个问题,因此您可能会发现进一步探索很有用。由于我们预计很多人会想要扩展完成,我们也在考虑提供其他可扩展性 API,这样您就不必ICompletionSourceProvider从头开始滚动,但此类 API 不在当前的 CTP 中。

[免责声明:我是从事 IntelliSense 工作的 Roslyn 团队的成员。]

于 2012-05-10T03:47:51.093 回答