Unterstützen von Tools zum Durchsuchen von Symbolen
Objektbrowser, Klassenansicht, Anrufbrowser und Tools zum Suchen von Symbolergebnissen bieten Funktionen zum Durchsuchen von Symbolen in Visual Studio. Diese Tools zeigen hierarchische Strukturansichten von Symbolen an und zeigen die Beziehungen zwischen den Symbolen in der Struktur an. Die Symbole können Namespaces, Objekte, Klassen, Klassenelemente und andere Sprachelemente darstellen, die in verschiedenen Komponenten enthalten sind. Zu den Komponenten gehören Visual Studio-Projekte, externe .NET Framework-Komponenten und Typbibliotheken (.tlb). Weitere Informationen finden Sie unter Anzeigen der Codestruktur.
Symbolbrowsen-Bibliotheken
Als Sprachimplementierer können Sie die Visual Studio-Symbolbrowsingfunktionen erweitern, indem Sie Bibliotheken erstellen, die die Symbole in Ihren Komponenten nachverfolgen und die Listen der Symbole über eine Reihe von Schnittstellen für den Visual Studio-Objekt-Manager bereitstellen. Eine Bibliothek wird von der IVsSimpleLibrary2 Schnittstelle beschrieben. Der Visual Studio-Objekt-Manager reagiert auf Anforderungen für neue Daten aus den Symbolbrowsingtools, indem die Daten aus den Bibliotheken abgerufen und organisiert werden. Anschließend werden die Tools mit den angeforderten Daten aufgefüllt oder aktualisiert. Um einen Verweis auf den Visual Studio-Objekt-Manager abzurufen, IVsObjectManager2übergeben Sie die SVsObjectManager Dienst-ID an die GetService
Methode.
Jede Bibliothek muss sich beim Visual Studio-Objekt-Manager registrieren, der die Informationen zu allen Bibliotheken sammelt. Rufen Sie die RegisterSimpleLibrary Methode auf, um eine Bibliothek zu registrieren. Je nachdem, welches Tool die Anforderung initiiert, findet der Visual Studio-Objekt-Manager die entsprechende Bibliothek und fordert Daten an. Die Daten werden zwischen den Bibliotheken und dem Visual Studio-Objekt-Manager in Listen von Symbolen geleitet, die von der IVsSimpleObjectList2 Schnittstelle beschrieben werden.
Der Visual Studio-Objekt-Manager ist für die regelmäßige Aktualisierung von Symbolbrowstools verantwortlich, um die aktuellen Daten in den Bibliotheken widerzuspiegeln.
Das folgende Diagramm enthält ein Beispiel für wichtige Elemente des Anforderungs-/Datenaustauschprozesses zwischen einer Bibliothek und dem Visual Studio-Objekt-Manager. Die Schnittstellen im Diagramm sind Teil einer Anwendung mit verwaltetem Code.
Um die Symbollisten für den Visual Studio-Objekt-Manager bereitzustellen, müssen Sie die Bibliothek zuerst beim Visual Studio-Objekt-Manager registrieren, indem Sie die RegisterSimpleLibrary Methode aufrufen. Nachdem die Bibliothek registriert wurde, fordert der Visual Studio-Objekt-Manager bestimmte Informationen zu den Funktionen der Bibliothek an. Sie fordert z. B. die Bibliothekskennzeichnungen und unterstützten Kategorien durch Aufrufen der GetLibFlags2 Und GetSupportedCategoryFields2 Methoden an. Wenn eines der Tools Daten aus dieser Bibliothek anfordert, fordert der Objekt-Manager irgendwann die Liste der Symbole der obersten Ebene an, indem die GetList2 Methode aufgerufen wird. Als Reaktion stellt die Bibliothek eine Liste von Symbolen her und macht sie über die IVsSimpleObjectList2 Schnittstelle für den Visual Studio-Objekt-Manager verfügbar. Der Visual Studio-Objekt-Manager bestimmt, wie viele Elemente sich in der Liste befinden, indem die GetItemCount Methode aufgerufen wird. Alle folgenden Anforderungen beziehen sich auf ein bestimmtes Element in der Liste und geben die Indexnummer des Elements in jeder Anforderung an. Der Visual Studio-Objekt-Manager sammelt die Informationen über den Typ, die Barrierefreiheit und andere Eigenschaften des Elements, indem die GetCategoryField2 Methode aufgerufen wird.
Er bestimmt den Namen des Elements durch Aufrufen der GetTextWithOwnership Methode und fordert die Symbolinformationen durch Aufrufen der GetDisplayData Methode an. Das Symbol wird links neben dem Elementnamen angezeigt und zeigt den Typ des Elements, die Barrierefreiheit und andere Eigenschaften an.
Der Visual Studio-Objekt-Manager ruft die GetExpandable3 Methode auf, um zu bestimmen, ob ein bestimmtes Listenelement erweiterbar ist und untergeordnete Elemente enthält. Wenn die Benutzeroberfläche eine Anforderung zum Erweitern eines Elements sendet, fordert der Objekt-Manager die untergeordnete Liste der Symbole an, indem die GetList2 Methode aufgerufen wird. Der Prozess wird mit verschiedenen Teilen der Struktur fortgesetzt, die bei Bedarf erstellt werden.
Hinweis
Verwenden Sie die und IVsObjectList2 die IVsLibrary2 Schnittstellen, um einen systemeigenen Codesymbolanbieter zu implementieren.