2015-11-01 122 views
16

在C#或Vb.Net中,使用Visual Studio 2013 SDK时,如何在显示成员信息时在Intellisense上添加其他元素?我想添加一个完成/建议元素,我想添加自定义额外的信息下显示的信息,可以抛出一个方法,函数或属性(getter/setter)异常的成员显示, ,而不是关键字。如何使用Visual Studio SDK扩展提供Intellisense的信息?

我读了一点Microsoft.VisualStudio.Language.Intellisense名字空间的成员,但是我对此没有任何清楚的想法。

我的目标,借助我能来到这里,就是为了找到答案,开发一个简单的扩展,将增加(记录)为会员异常信息,像这样:

enter image description here

我想知道在Visual Studio for C#中带回这个有用的功能,并将它添加到VB.Net中,那么如果成功,我将免费与您分享它,像我过去一样使用此扩展:

只是我评论说因为任何帮助都可以通过这种方式得到回报!


另外我的问题,只有此外,如果有人可以开始指导我如何找出检索成员的XML格式文档(<exception cref="Exception name">)要做到这一点,或者一个简单的方法方式,我会很感激。

编辑

有关XML的文档,我的想法来使用Visual Studio 对象浏览器检查,将通过智能感知上市,而不是与反思搞乱成员的异常?获取异常信息。一旦我能够弄清楚如何从SDK中自动化对象浏览器,这可能是一种更好和可行的方法,但我只是对此进行评论,可能这个问题一旦解决就会成为一个新问题,因为首先我需要解决这一步,我希望如此。

+1

这个问题与你的[上一个问题](http://stackoverflow.com/questions/33460002)有什么不同? –

+2

@Bjørn-RogerKringsjå感谢您的评论。在那个问题中,我询问是否存在一种引导方式来启用IDE中的功能(如隐藏的选项或命令)或现有的第三方扩展。这个问题是不同的,这是特定的编程语言,开始尝试从头开始扩展以添加该功能。 – ElektroStudios

+0

个人而言,我不想在Intellisense中使用完整的详细文档。参数和返回适用于输入方法名称时。在对象浏览器中查看注释和/或例外是非常不同的步骤(对我而言)。 – Plutonix

回答

7

有迹象表明,你需要使用的每个有下列情形几类IntelliSence扩展点:

  • 的工具提示悬停文本元素被称为QuickInfo工具时显示-tip,并且可以通过从IQuickInfoSource接口继承并创建匹配的IIntellisenseController来实现。一个完整的步行通过,可以发现on MSDN

    • 例子:IQuickInfoSourceProvider加载由

      QuickInfo Tool-Tip

    • 确保让你的你的IQuickInfoSource之前默认Visual-Studio一个使用Order attribute - 否则将不会显示默认QuickInfo

      [Order(Before = "Default Quick Info Presenter")] 
      
  • 写入方法名称时所显示的工具提示,显示它的签名被称为Signature Help,可以通过在一个非常类似的方式向QuickInfo工具提示继承ISignatureHelpSource实现。一个完整的演练中可以发现on MSDN

    • 例子:

      Signature Help

  • Code Snippets - 这是无关紧要的为您服务。

  • Statement Completions - 这是无关紧要的为您服务。要显示

注意,你需要在你的项目的工具提示的IClassifier,有了这个,你也可以使得Exceptions将受到不同看作是你想修改视图。 Guide on MSDN

另一方面获取有关方法的信息由您决定。您可以使用外部手动源,并在您的IQuickInfoSource中使用它,或者通过使用Roslyn分析ITextStructureNavigator的读取字,通过您正在浏览的代码文档分析,从匹配的XML Comment文档中读取它。

对不起,如果这是一个小抽象的答案,但这是一个非常广泛的问题,有很多方法来实现这样的扩展。

P.S .:我设法做出了一个类似的扩展低质量为了研究这个领域,所以如果你有任何关于实现本身的问题随时问。