Registrace knihovny ve správci objektů
Nástroje pro procházení symbolů, jako je zobrazení tříd, prohlížeč objektů, prohlížeč volání a výsledky hledání symbolů, umožňují zobrazit symboly v projektu nebo v externích komponentách. Symboly zahrnují obory názvů, třídy, rozhraní, metody a další prvky jazyka. Knihovny tyto symboly sledují a zveřejňují je správci objektů sady Visual Studio, který naplní nástroje daty.
Správce objektů sleduje všechny dostupné knihovny. Každá knihovna se musí před poskytnutím symbolů pro nástroje pro procházení symbolů zaregistrovat ve správci objektů.
Obvykle zaregistrujete knihovnu při načtení balíčku VSPackage. Dá se to ale provést v jiném čase podle potřeby. Zrušíte registraci knihovny při vypnutí balíčku VSPackage.
Pokud chcete zaregistrovat knihovnu, použijte metodu RegisterLibrary . Pro spravovanou knihovnu kódu použijte metodu RegisterSimpleLibrary .
Pokud chcete zrušit registraci knihovny, použijte metodu UnregisterLibrary .
Chcete-li získat odkaz na správce objektů, IVsObjectManager2předejte SVsObjectManager ID služby metodě GetService
.
Registrace a zrušení registrace knihovny ve správci objektů
Registrace knihovny ve správci objektů
Vytvořte knihovnu.
Získejte odkaz na objekt IVsObjectManager2 typu a zavolejte metodu 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; } }
Zrušení registrace knihovny pomocí správce objektů
Získejte odkaz na objekt IVsObjectManager2 typu a zavolejte metodu 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; } } }