Condividi tramite


Procedura: Registrare una libreria con l'amministratore dell'oggetto

gli strumenti di Simbolo-esplorazione, come Visualizzazione classi, Visualizzatore oggetti, Visualizzatore chiamate e Risultati del simbolo di ricerca, consentono di visualizzare i simboli nel progetto o in componenti esterni. I simboli inclusi gli spazi dei nomi, classi, interfacce, i metodi e gli altri elementi del linguaggio. Le librerie gestione di tali simboli e li espongono gestione dell'oggetto di Visual Studio che popola gli strumenti con i dati.

L'amministratore dell'oggetto tiene traccia di tutte le librerie disponibili. Ogni raccolta necessario registrare con l'amministratore dell'oggetto prima di fornire i simboli degli strumenti di simbolo-esplorazione.

In genere, si registra una raccolta quando un package VS viene caricato. Tuttavia, possono essere effettuate in un altro momento in base alle necessità. Annullare la registrazione della raccolta quando il package VS è stata chiusa.

per registrare una raccolta, utilizzare il metodo di RegisterLibrary . Nel caso di codice gestito, utilizzare il metodo di RegisterSimpleLibrary .

Per annullare la registrazione di una raccolta, utilizzare il metodo di UnregisterLibrary .

Per ottenere un riferimento all'amministratore dell'oggetto, IVsObjectManager2, passa il servizio ID di SVsObjectManager al metodo di GetService .

Registrando e annullamento della registrazione di una raccolta con l'amministratore dell'oggetto

Per registrare una libreria con l'amministratore dell'oggetto

  1. creare una raccolta.

    Private m_CallBrowserLibrary As CallBrowser.Library = Nothing
    Private m_nLibraryCookie As UInteger = 0
    ' Create Library.
    m_CallBrowserLibrary = New CallBrowser.Library()
    
    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 tipo di IVsObjectManager2 e chiamare il metodo di RegisterSimpleLibrary .

    Private Sub RegisterLibrary()
        If m_nLibraryCookie <> 0 Then
            Throw New Exception("Library already registered with Object Manager")
        End If
    
        ' Obtain a reference to IVsObjectManager2 type object.
        Dim objManager As IVsObjectManager2 = TryCast(GetService(GetType(SVsObjectManager)), IVsObjectManager2)
        If objManager Is Nothing Then
            Throw New NullReferenceException("GetService failed for SVsObjectManager")
        End If
    
        Try
            Dim hr As Integer = objManager.RegisterSimpleLibrary(m_CallBrowserLibrary, m_nLibraryCookie)
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr)
        Catch e As Exception
            ' Code to handle any CLS-compliant exception.
            Trace.WriteLine(e.Message)
            Throw
        End Try
    End Sub
    
    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 raccolta con l'amministratore dell'oggetto

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

    Private Sub UnregisterLibrary()
        If m_nLibraryCookie <> 0 Then
            ' Obtain a reference to IVsObjectManager2 type object.
            Dim objManager As IVsObjectManager2 = TryCast(GetService(GetType(SVsObjectManager)), IVsObjectManager2)
            If objManager Is Nothing Then
                Throw New NullReferenceException("GetService failed for SVsObjectManager")
            End If
    
            Try
                objManager.UnregisterLibrary(m_nLibraryCookie)
            Catch e As Exception
                ' Code to handle any CLS-compliant exception.
                Trace.WriteLine(e.Message)
                Throw
            Finally
                m_nLibraryCookie = 0
            End Try
        End If
    End Sub
    
    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;
            }
        }
    }
    

Vedere anche

Attività

Procedura: Elenchi di esporre i simboli forniti dalla libreria gestione dell'oggetto

Concetti

Strumenti di supporto di Simbolo-Esplorazione

Altre risorse

servizi di linguaggio