Sdílet prostřednictvím


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ů

  1. Vytvořte knihovnu.

    private CallBrowser.Library m_CallBrowserLibrary = null;
    private uint m_nLibraryCookie = 0;
    // Create Library.
    m_CallBrowserLibrary = new CallBrowser.Library();
    
    
  2. 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ů

  1. 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;
            }
        }
    }