2015-11-01 124 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 .:我設法做出了一個類似的擴展低質量爲了研究這個領域,所以如果你有任何關於實現本身的問題隨時問。