如何使用Visual Studio SDK扩展提供Intellisense的信息?

How to extend the information that provides Intellisense using the Visual Studio SDK?

在 C# 或 Vb.Net 中,使用 Visual Studio 2013 SDK,如何在显示会员信息时在 Intellisense 上添加额外的元素?

我的目的不是添加 completion/suggestion 元素,我想在为可以抛出异常的成员显示的信息下方添加自定义附加信息,例如方法、函数或 属性 (getter/setter),不是关键字。

我读了一些 Microsoft.VisualStudio.Language.Intellisense 命名空间的成员,但我对此没有任何清晰的认识。

我的目标是找到答案,开发一个简单的扩展,为成员添加(记录的)异常信息,如下所示:

我想在 C# 的 Visual Studio 中恢复这个有用的功能,并为 VB.Net 添加它,然后如果成功,我将像我在过去有这个有用的扩展:

我只是评论说,因为任何帮助都可以通过这种方式为我们所有人提供回报!


除了我的问题,而且只有另外,如果有人可以开始指导我如何找出检索成员 (<exception cref="Exception name">) 的 Xml 文档的方法来执行此操作,或者简单的方法,我将不胜感激。

编辑:

关于 Xml 文档,我想到使用 Visual Studio 对象浏览器 检查将由智能感知而不是搞乱反射?获取异常信息。一旦我弄清楚如何从 SDK 自动化对象浏览器,这可能是一种更好、更可行的方法,但我只是评论这个,一旦这个问题得到解决,也许这将是一个新问题,因为首先我需要解决这一步,希望如此。

对于以下每种情况,您需要使用几种类型的 IntelliSence 扩展点:

  • 调用悬停文本元素时显示的工具提示QuickInfo工具提示,继承自IQuickInfoSource interface and creating a matching IIntellisenseController. A full walk-through can be found on MSDN:

    可自行实现
    • 示例:

    • 确保设置 IQuickInfoSourceProvider load your IQuickInfoSource before the default Visual-Studio one by using the Order attribute - 否则将不会显示默认的 QuickInfo:

      [Order(Before = "Default Quick Info Presenter")]
      
  • 编写方法名称时显示的工具提示显示其签名称为 Signature Help并且可以通过继承ISignatureHelpSource in a very similar way to the QuickInfo tool-tip. A full walkthrough can be found on MSDN:

    来实现
    • 示例:

  • Code Snippets - 这与您无关。

  • Statement Completions - 这与您无关。

请注意,您需要在项目中创建一个 IClassifier 才能显示工具提示,您还可以修改视图,使 Exceptions 的显示方式有所不同如你所愿。 Guide on MSDN.

另一方面,获取有关方法的信息取决于您。您可以使用外部手册资源并在您的 IQuickInfoSource 中使用它,或者通过使用 Roslyn 在代码上分析 ITextStructureNavigator 的读词来从匹配的 XML Comment 文档中读取它记录您正在导航。

抱歉,如果回答有点抽象,但这是一个非常广泛的问题,有很多方法可以实现这样的扩展。

P.S.: 为了研究这个领域,我已经设法以低质量进行了类似的扩展,所以如果您对实施有任何疑问自己随便问。