Partilhar via


Registrar uma biblioteca com o gerenciador de objetos

As ferramentas de navegação de símbolos, como Modo de Exibição de Classe, Pesquisador de Objetos, Navegador de Chamadas e Localizar Resultados de Símbolos, permitem que você exiba símbolos em seu projeto ou em componentes externos. Os símbolos incluem namespaces, classes, interfaces, métodos e outros elementos de linguagem. As bibliotecas controlam esses símbolos e os expõem ao gerenciador de objetos do Visual Studio que preenche as ferramentas com os dados.

O gerenciador de objetos controla todas as bibliotecas disponíveis. Cada biblioteca deve se registrar com o gerenciador de objetos antes de fornecer símbolos para as ferramentas de navegação de símbolos.

Normalmente, você registra uma biblioteca quando um VSPackage é carregado. No entanto, isso pode ser feito em outro momento, conforme necessário. Cancelar o registro da biblioteca quando o VSPackage é desligado.

Para registrar uma biblioteca, use o RegisterLibrary método. Para uma biblioteca de código gerenciado, use o RegisterSimpleLibrary método.

Para cancelar o registro de uma biblioteca, use o UnregisterLibrary método.

Para obter uma referência ao gerenciador de objetos, , IVsObjectManager2passe a ID de serviço para o SVsObjectManager GetService método.

Registrar e cancelar o registro de uma biblioteca com o gerenciador de objetos

Para registrar uma biblioteca com o gerenciador de objetos

  1. Crie uma biblioteca.

    private CallBrowser.Library m_CallBrowserLibrary = null;
    private uint m_nLibraryCookie = 0;
    // Create Library.
    m_CallBrowserLibrary = new CallBrowser.Library();
    
    
  2. Obtenha uma referência a um objeto do IVsObjectManager2 tipo e chame o RegisterSimpleLibrary método.

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

Para cancelar o registro de uma biblioteca com o gerenciador de objetos

  1. Obtenha uma referência a um objeto do IVsObjectManager2 tipo e chame o UnregisterLibrary método.

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