Rejestrowanie biblioteki w menedżerze obiektów
Narzędzia przeglądania symboli, takie jak Widok klas, Przeglądarka obiektów, Przeglądarka wywołań i Wyniki symboli wyszukiwania, umożliwiają wyświetlanie symboli w projekcie lub w składnikach zewnętrznych. Symbole obejmują przestrzenie nazw, klasy, interfejsy, metody i inne elementy języka. Biblioteki śledzą te symbole i uwidaczniają je w menedżerze obiektów programu Visual Studio, który wypełnia narzędzia danymi.
Menedżer obiektów śledzi wszystkie dostępne biblioteki. Każda biblioteka musi zarejestrować się w menedżerze obiektów przed udostępnieniem symboli narzędzi do przeglądania symboli.
Zazwyczaj biblioteka jest rejestrowana podczas ładowania pakietu VSPackage. Jednak można to zrobić w innym czasie, zgodnie z potrzebami. Wyrejestrowywanie biblioteki po zamknięciu pakietu VSPackage.
Aby zarejestrować bibliotekę, użyj RegisterLibrary metody . W przypadku biblioteki kodu zarządzanego użyj RegisterSimpleLibrary metody .
Aby wyrejestrować bibliotekę, użyj UnregisterLibrary metody .
Aby uzyskać odwołanie do menedżera obiektów, IVsObjectManager2przekaż SVsObjectManager identyfikator usługi do GetService
metody .
Rejestrowanie i wyrejestrowywanie biblioteki za pomocą menedżera obiektów
Aby zarejestrować bibliotekę za pomocą menedżera obiektów
Utwórz bibliotekę.
Uzyskaj odwołanie do obiektu IVsObjectManager2 typu i wywołaj metodę RegisterSimpleLibrary .
private void RegisterLibrary() { if (m_nLibraryCookie != 0) throw new Exception("Library already registered with Object Manager"); // Obtain a reference to IVsObjectManager2 type object. IVsObjectManager2 objManager = GetService(typeof(SVsObjectManager)) as IVsObjectManager2; if (objManager == null) throw new NullReferenceException("GetService failed for SVsObjectManager"); try { int hr = objManager.RegisterSimpleLibrary(m_CallBrowserLibrary, out m_nLibraryCookie); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); } catch (Exception e) { // Code to handle any CLS-compliant exception. Trace.WriteLine(e.Message); throw; } }
Aby wyrejestrować bibliotekę za pomocą menedżera obiektów
Uzyskaj odwołanie do obiektu IVsObjectManager2 typu i wywołaj metodę UnregisterLibrary .
private void UnregisterLibrary() { if (m_nLibraryCookie != 0) { // Obtain a reference to IVsObjectManager2 type object. IVsObjectManager2 objManager = GetService(typeof(SVsObjectManager)) as IVsObjectManager2; if (objManager == null) throw new NullReferenceException("GetService failed for SVsObjectManager"); try { objManager.UnregisterLibrary(m_nLibraryCookie); } catch (Exception e) { // Code to handle any CLS-compliant exception. Trace.WriteLine(e.Message); throw; } finally { m_nLibraryCookie = 0; } } }