Condividi tramite


Registrare una libreria con gestione oggetti

Gli strumenti di esplorazione dei simboli, ad esempio Visualizzazione classi, Visualizzatore oggetti, Browser chiamate e Risultati dei simboli di ricerca, consentono di visualizzare i simboli nel progetto o in componenti esterni. I simboli includono spazi dei nomi, classi, interfacce, metodi e altri elementi del linguaggio. Le librerie tengono traccia di questi simboli e le espongono al gestore oggetti di Visual Studio che popola gli strumenti con i dati.

Gestione oggetti tiene traccia di tutte le librerie disponibili. Ogni libreria deve registrarsi con gestione oggetti prima di fornire simboli per gli strumenti di esplorazione dei simboli.

In genere, si registra una libreria quando viene caricato un PACCHETTO VSPackage. Tuttavia, può essere eseguita in un altro momento in base alle esigenze. Annullare la registrazione della libreria quando il pacchetto VSPackage viene arrestato.

Per registrare una libreria, usare il RegisterLibrary metodo . Per una libreria di codice gestito, usare il RegisterSimpleLibrary metodo .

Per annullare la registrazione di una libreria, usare il UnregisterLibrary metodo .

Per ottenere un riferimento al gestore oggetti, IVsObjectManager2, passare l'ID SVsObjectManager del servizio al GetService metodo .

Registrare e annullare la registrazione di una libreria con gestione oggetti

Per registrare una libreria con gestione oggetti

  1. Creare una libreria.

    private CallBrowser.Library m_CallBrowserLibrary = null;
    private uint m_nLibraryCookie = 0;
    // Create Library.
    m_CallBrowserLibrary = new CallBrowser.Library();
    
    
  2. Ottenere un riferimento a un oggetto del IVsObjectManager2 tipo e chiamare il RegisterSimpleLibrary metodo .

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

Per annullare la registrazione di una libreria con gestione oggetti

  1. Ottenere un riferimento a un oggetto del IVsObjectManager2 tipo e chiamare il UnregisterLibrary metodo .

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