Condividi tramite


Supporto degli strumenti di esplorazione dei simboli

Gli strumenti Visualizzatore oggetti, Visualizzazione classi, Browser chiamate e Risultati dei simboli di ricerca offrono funzionalità di esplorazione dei simboli in Visual Studio. Questi strumenti visualizzano visualizzazioni gerarchiche ad albero dei simboli e mostrano le relazioni tra i simboli nell'albero. I simboli possono rappresentare spazi dei nomi, oggetti, classi, membri di classe e altri elementi del linguaggio contenuti in vari componenti. I componenti includono progetti di Visual Studio, componenti esterni di .NET Framework e librerie di tipo (tlb). Per altre informazioni, vedere Viewing the Structure of Code (Visualizzazione della struttura del codice).

Librerie di esplorazione dei simboli

In qualità di implementatore del linguaggio, è possibile estendere le funzionalità di esplorazione dei simboli di Visual Studio creando librerie che tengono traccia dei simboli nei componenti e fornendo gli elenchi di simboli al gestore oggetti di Visual Studio tramite un set di interfacce. Una libreria è descritta dall'interfaccia IVsSimpleLibrary2 . Gestione oggetti di Visual Studio risponde alle richieste di nuovi dati dagli strumenti di esplorazione dei simboli ottenendo i dati dalle librerie e organizzandoli. Successivamente popola o aggiorna gli strumenti con i dati richiesti. Per ottenere un riferimento al gestore oggetti di Visual Studio, IVsObjectManager2passare l'ID SVsObjectManager del servizio al GetService metodo .

Ogni libreria deve essere registrata con Gestione oggetti di Visual Studio, che raccoglie le informazioni su tutte le librerie. Per registrare una libreria, chiamare il RegisterSimpleLibrary metodo . A seconda dello strumento che avvia la richiesta, Gestione oggetti di Visual Studio trova la libreria appropriata e richiede i dati. I dati vengono trasferiti tra le librerie e lo strumento di gestione oggetti di Visual Studio negli elenchi di simboli descritti dall'interfaccia IVsSimpleObjectList2 .

Gestione oggetti di Visual Studio è responsabile dell'aggiornamento periodico degli strumenti di esplorazione dei simboli per riflettere i dati più aggiornati contenuti nelle librerie.

Il diagramma seguente contiene un esempio di elementi chiave del processo di scambio di richieste/dati tra una libreria e la gestione oggetti di Visual Studio. Le interfacce nel diagramma fanno parte di un'applicazione con codice gestito.

Data flow between a library and the object manager

Per fornire gli elenchi di simboli al gestore oggetti di Visual Studio, è prima necessario registrare la libreria con Gestione oggetti di Visual Studio chiamando il RegisterSimpleLibrary metodo . Dopo la registrazione della libreria, Gestione oggetti di Visual Studio richiede alcune informazioni sulle funzionalità della libreria. Ad esempio, richiede i flag di libreria e le categorie supportate chiamando i GetLibFlags2 metodi e GetSupportedCategoryFields2 . A un certo punto, quando uno degli strumenti richiede dati da questa libreria, gestione oggetti richiede l'elenco di simboli di primo livello chiamando il GetList2 metodo . In risposta, la libreria produce un elenco di simboli e lo espone al gestore oggetti di Visual Studio tramite l'interfaccia IVsSimpleObjectList2 . Gestione oggetti di Visual Studio determina il numero di elementi presenti nell'elenco chiamando il GetItemCount metodo . Tutte le richieste seguenti sono correlate a un determinato elemento nell'elenco e forniscono il numero di indice dell'elemento in ogni richiesta. Gestione oggetti di Visual Studio procede per raccogliere le informazioni sul tipo, l'accessibilità e altre proprietà dell'elemento chiamando il GetCategoryField2 metodo .

Determina il nome dell'elemento chiamando il GetTextWithOwnership metodo e richiede le informazioni sull'icona chiamando il GetDisplayData metodo . L'icona viene visualizzata a sinistra del nome dell'elemento e illustra il tipo dell'elemento, l'accessibilità e altre proprietà.

Gestione oggetti di Visual Studio chiama il GetExpandable3 metodo per determinare se una determinata voce di elenco è espandibile e include elementi figlio. Se l'interfaccia utente invia una richiesta per espandere un elemento, gestione oggetti richiede l'elenco figlio di simboli chiamando il GetList2 metodo . Il processo continua con parti diverse dell'albero costruito su richiesta.

Nota

Per implementare un provider di simboli di codice nativo, usare le IVsLibrary2 interfacce e IVsObjectList2 .