2015-11-01 17 views
16

In C# o Vb.Net, utilizzando l'SDK di Visual Studio 2013, come aggiungere un elemento aggiuntivo su Intellisense quando vengono visualizzate le informazioni di un membro ?.Come estendere le informazioni che forniscono Intellisense usando l'SDK di Visual Studio?

La mia intenzione non è quella di aggiungere un elemento di completamento/suggerimento, vorrei aggiungere ulteriori informazioni personalizzate sotto le informazioni che vengono mostrate per un membro che può lanciare un'eccezione come metodo, funzione o proprietà (getter/setter) , non una parola chiave.

Ho letto un po 'i membri dello spazio dei nomi Microsoft.VisualStudio.Language.Intellisense ma non ne ho avuto una chiara idea.

Il mio obiettivo, con l'aiuto ho potuto ottenere qui, è quello di trovare la risposta per sviluppare una semplice estensione che aggiungerà (documentato) Informazioni eccezione per i membri, qualcosa di simile:

enter image description here

I mi chiedo di riportare questa utile funzionalità in Visual Studio per C# e aggiungerla anche per VB.Net, quindi in caso di successo la condividerò gratuitamente con tutte le tue come ho fatto in passato con questa utile estensione:

Esprimo solo questo perché qualsiasi aiuto potrebbe essere ricompensato per tutti noi in questo modo !.


In aggiunta alla mia domanda, e solo Inoltre, se qualcuno potrebbe iniziare mi guida su come capire il modo per recuperare la documentazione XML dei membri (<exception cref="Exception name">) per fare questo, o forse un modo semplice, Sarei molto grato.

EDIT:

Informazioni sulla documentazione XML, ho l'idea di utilizzare Visual Studio browser degli oggetti per ispezionare le eccezioni degli Stati che saranno elencati per Intellisense, invece di fare scherzi con la riflessione? per ottenere informazioni sulle eccezioni. Questo potrebbe essere un modo migliore e fattibile per farlo una volta che riuscirò a capire come automatizzare il browser degli oggetti da SDK, ma sto solo commentando questo, forse quella sarà una nuova domanda una volta che questa domanda potrebbe essere risolta, perché in primo luogo io ho bisogno di risolvere questo passaggio, lo spero.

+1

In che modo questa domanda è diversa dalla [domanda precedente] (http://stackoverflow.com/questions/33460002)? –

+2

@ Bjørn-Roger Kringsjå Grazie per il commento. In quella domanda ho chiesto l'esistenza di un modo guidato per abilitare la funzione dall'IDE (tale opzione o comando nascosta) o da un'estensione di terze parti esistente. Questa domanda è diversa, questo è specifico del linguaggio di programmazione per iniziare a provare a sviluppare un'estensione da zero per aggiungere quella funzionalità. – ElektroStudios

+0

Personalmente, non vorrei una documentazione completa e dettagliata in Intellisense. Gli argomenti e il ritorno sono appropriati per quando si digita un nome di metodo. Guardare le cose in Object Browser per vedere commenti e/o eccezioni è un passo molto diverso (per me). – Plutonix

risposta

7

Ci sono alcuni tipi di punti IntelliSence estensibilità che è necessario utilizzare per ciascuno dei seguenti casi:

  • Il suggerimento mostrato quando si libra elemento di testo è chiamato QuickInfo strumento -tip, e può essere implementato da solo ereditando dall'interfaccia IQuickInfoSource e creando un matching IIntellisenseController.Una full walk-through può essere trovato on MSDN:

    • Esempio:

      QuickInfo Tool-Tip

    • Assicurati di fare il vostro IQuickInfoSourceProvider caricare il tuo IQuickInfoSourceprima il default Visual-Studio uno usando il Order attribute - altrimenti il ​​valore predefinito QuickInfo non verrà mostrato:

      [Order(Before = "Default Quick Info Presenter")] 
      
  • Il suggerimento mostrato durante la scrittura nome metodo che mostra che è firma è chiamato Signature Help e può essere implementata da ereditare ISignatureHelpSource in un modo molto simile alla QuickInfo tool-tip. Una guida completa è disponibile on MSDN:

    • Esempio:

      Signature Help

  • Code Snippets - che sono irrilevanti per voi.

  • Statement Completions - che sono irrilevanti per voi.

Nota che sarà necessario fare un IClassifier nel progetto per lo strumento di suggerimenti da visualizzare, con questo si può anche modificare la visualizzazione in modo che il Exceptions sarà considerata in modo diverso come si desidera. Guide on MSDN.

Ottenere le informazioni sui metodi d'altra parte dipende da voi. è possibile utilizzare una fonte manuale esterna e utilizzarla nel documento IQuickInfoSource o leggerla da un documento XML Comment corrispondente analizzando la parola di lettura ITextStructureNavigator utilizzando Roslyn sul documento di codice che si sta navigando.

Scusa se è stata una piccola risposta astratta ma questa è una domanda molto ampia e ci sono molti modi per implementare tale estensione.

P.S .: Sono riuscito a fare un'estensione simile in bassa qualità per studiare questo campo, quindi se avete domande sulla stessa implementazione non esitate a chiedere.