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

时间:2015-11-01 11:16:28

标签: c# .net vb.net visual-studio visual-studio-sdk

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

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

我稍微阅读了 Microsoft.VisualStudio.Language.Intellisense 命名空间的成员,但我没有对此有任何明确的想法。

我的目标,在我可以得到的帮助下,找到答案来开发一个简单的扩展,它将添加(记录)成员的异常信息,如下所示:

enter image description here

我想在Visual Studio for C#中恢复这个有用的功能,并将其添加到VB.Net中,然后如果成功,我会像过去那样使用这个有用的扩展程序免费分享它:

我只是评论一下,因为任何帮助都可以通过这种方式为我们所有人带来回报!。

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

修改

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

1 个答案:

答案 0 :(得分:8)

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

  • 当悬停文本元素时显示的工具提示名为 QuickInfo 工具提示,并且可以是您自己通过继承IQuickInfoSource界面并创建匹配的IIntellisenseController来实现。可以找到完整的演练on MSDN

    • 示例:

      QuickInfo Tool-Tip

    • 请务必使用{IQuickInfoSourceProvider加载IQuickInfoSource 默认Visual-Studio {3}} - 否则将不会显示默认QuickInfo

      [Order(Before = "Default Quick Info Presenter")]
      
  • 在编写显示其签名的方法名称时显示的工具提示称为 Signature Help ,可以通过继承来实现Order attributeQuickInfo工具提示的方式非常相似。可以找到完整的演练ISignatureHelpSource

  • Code Snippets - 这些与您无关。

  • Statement Completions - 这些与您无关。

请注意,您需要在项目中设置IClassifier才能显示工具提示,这样您还可以修改视图,以便{I} {{}}以不同方式查看希望。 Signature Help

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

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

PS:为了研究这个领域,我设法以低质量进行了类似的扩展,所以如果您对实现本身有任何疑问,请随时提出。