Udostępnij przez


Obsługa narzędzi Symbol-Browsing

Przeglądarka obiektów, widok klas, przeglądarka wywołań i narzędzia wyszukiwania wyników symboli zapewniają możliwości przeglądania symboli w programie Visual Studio. Te narzędzia wyświetlają hierarchiczne widoki drzewa symboli i pokazują relacje między symbolami w drzewie. Symbole mogą reprezentować przestrzenie nazw, obiekty, klasy, składowe klasy i inne elementy języka zawarte w różnych składnikach. Składniki obejmują projekty programu Visual Studio, zewnętrzne składniki programu .NET Framework i biblioteki typu (.tlb). Aby uzyskać więcej informacji, zobacz Wyświetlanie struktury kodu.

biblioteki przeglądania symboli

Jako implementator języka można rozszerzyć możliwości przeglądania symboli programu Visual Studio, tworząc biblioteki, które śledzą symbole w składnikach i udostępniają listy symboli do menedżera obiektów programu Visual Studio za pomocą zestawu interfejsów. Interfejs IVsSimpleLibrary2 opisuje bibliotekę. Menedżer obiektów programu Visual Studio odpowiada na żądania dotyczące nowych danych z narzędzi przeglądania symboli, uzyskując dane z bibliotek i organizując je. Następnie wypełnia lub aktualizuje narzędzia przy użyciu żądanych danych. Aby uzyskać odwołanie do menedżera obiektów programu Visual Studio, IVsObjectManager2 przekaż identyfikator usługi SVsObjectManager do metody GetService.

Każda biblioteka musi zarejestrować się w menedżerze obiektów programu Visual Studio, który zbiera informacje o wszystkich bibliotekach. Aby zarejestrować bibliotekę, wywołaj metodę RegisterSimpleLibrary . W zależności od tego, które narzędzie inicjuje żądanie, menedżer obiektów programu Visual Studio znajduje odpowiednią bibliotekę i żąda danych. Dane są przesyłane między bibliotekami a menedżerem obiektów programu Visual Studio na listach symboli opisanych przez IVsSimpleObjectList2 interfejs.

Menedżer obiektów programu Visual Studio jest odpowiedzialny za okresowe odświeżanie narzędzi przeglądania symboli w celu odzwierciedlenia najnowszych danych zawartych w bibliotekach.

Poniższy diagram zawiera przykład kluczowych elementów procesu wymiany żądań/danych między biblioteką a menedżerem obiektów programu Visual Studio. Interfejsy na diagramie są częścią aplikacji kodu zarządzanego.

Przepływ danych między biblioteką a menedżerem obiektów

Aby udostępnić listy symboli menedżerowi obiektów programu Visual Studio, należy najpierw zarejestrować bibliotekę w menedżerze obiektów programu Visual Studio, wywołując metodę RegisterSimpleLibrary . Po zarejestrowaniu biblioteki menedżer obiektów programu Visual Studio żąda pewnych informacji o możliwościach biblioteki. Na przykład żąda flag biblioteki i obsługiwanych kategorii, wywołując metody GetLibFlags2 i GetSupportedCategoryFields2. W pewnym momencie, gdy jeden z narzędzi żąda danych z tej biblioteki, menedżer obiektów żąda listy symboli najwyższego poziomu, wywołując metodę GetList2 . W odpowiedzi biblioteka tworzy listę symboli i uwidacznia ją w menedżerze obiektów programu Visual Studio za pośrednictwem interfejsu IVsSimpleObjectList2 . Menedżer obiektów programu Visual Studio określa, ile elementów znajduje się na liście, wywołując metodę GetItemCount . Wszystkie następujące żądania odnoszą się do danego elementu na liście i podaj numer indeksu elementu w każdym żądaniu. Menedżer obiektów programu Visual Studio kontynuuje zbieranie informacji na temat typu, ułatwień dostępu i innych właściwości elementu przez wywołanie GetCategoryField2 metody .

Określa nazwę elementu, wywołując metodę GetTextWithOwnership i żądając informacji o ikonie przez wywołanie GetDisplayData metody . Ikona jest wyświetlana po lewej stronie nazwy elementu i przedstawia typ elementu, ułatwienia dostępu i innych właściwości.

Menedżer obiektów programu Visual Studio wywołuje metodę GetExpandable3 w celu określenia, czy dany element listy można rozwinąć i zawiera elementy podrzędne. Jeśli interfejs użytkownika wysyła żądanie rozwinięcia elementu, menedżer obiektów żąda podrzędnej listy symboli, wywołując metodę GetList2 . Proces jest kontynuowany z różnymi częściami drzewa, które są tworzone na żądanie.

Uwaga / Notatka

Aby zaimplementować dostawcę symboli kodu natywnego, użyj interfejsów IVsLibrary2 i IVsObjectList2.