Registro de una biblioteca con el administrador de objetos

Las herramientas de exploración de símbolos, como la vista de clases, el explorador de objetos, el explorador de llamadas y los resultados de buscar símbolos, permiten ver símbolos en el proyecto o en componentes externos. Los símbolos incluyen espacios de nombres, clases, interfaces, métodos y otros elementos del lenguaje. Las bibliotecas realizan un seguimiento de estos símbolos y las exponen al administrador de objetos de Visual Studio que rellena las herramientas con los datos.

El administrador de objetos realiza un seguimiento de todas las bibliotecas disponibles. Cada biblioteca debe registrarse con el administrador de objetos antes de proporcionar símbolos para las herramientas de exploración de símbolos.

Normalmente, se registra una biblioteca cuando se carga un VSPackage. Sin embargo, se puede hacer en otro momento según sea necesario. Anula el registro de la biblioteca cuando se cierra VSPackage.

Para registrar una biblioteca, use el RegisterLibrary método . Para una biblioteca de código administrado, use el RegisterSimpleLibrary método .

Para anular el registro de una biblioteca, use el UnregisterLibrary método .

Para obtener una referencia al administrador de objetos, IVsObjectManager2, pase el identificador de SVsObjectManager servicio al GetService método .

Registro y anulación del registro de una biblioteca con el administrador de objetos

Para registrar una biblioteca con el administrador de objetos

  1. Cree una biblioteca.

    private CallBrowser.Library m_CallBrowserLibrary = null;
    private uint m_nLibraryCookie = 0;
    // Create Library.
    m_CallBrowserLibrary = new CallBrowser.Library();
    
    
  2. Obtenga una referencia a un objeto del IVsObjectManager2 tipo y llame al 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 anular el registro de una biblioteca con el administrador de objetos

  1. Obtenga una referencia a un objeto del IVsObjectManager2 tipo y llame al 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;
            }
        }
    }