Comment : inscrire une bibliothèque avec le Gestionnaire d’objetsHow to: Register a Library with the Object Manager

Exploration des symboles d’outils, tels que affichage de classes, Explorateur d’objets, Explorateur d’appels et résultats, vous permettent d’afficher symboles dans votre projet ou dans les composants externes.Symbols-browsing tools, such as Class View, Object Browser, Call Browser and Find Symbol Results, enable you to view symbols in your project or in external components. Les symboles incluent des espaces de noms, classes, interfaces, méthodes et autres éléments de langage.The symbols include namespaces, classes, interfaces, methods, and other language elements. Les bibliothèques de suivre ces symboles et les exposer à le Visual StudioVisual Studio Gestionnaire d’objets qui remplit les outils avec les données.The libraries track these symbols and expose them to the Visual StudioVisual Studio object manager that populates the tools with the data.

Le Gestionnaire d’objets effectue le suivi de toutes les bibliothèques disponibles.The object manager keeps track of all available libraries. Chaque bibliothèque doit inscrire auprès du Gestionnaire de l’objet avant de fournir des symboles pour les outils de consultation du symbole.Each library must register with the object manager before providing symbols for the symbol-browsing tools.

En règle générale, vous inscrivez une bibliothèque lors de la charge d’un VSPackage.Typically, you register a library when a VSPackage loads. Toutefois, il est possible à un autre moment en fonction des besoins.However, it can be done at another time as needed. Vous annulez l’inscription de la bibliothèque lorsque le VSPackage s’arrête.You unregister the library when the VSPackage shuts down.

Pour inscrire une bibliothèque, utilisez le RegisterLibrary (méthode).To register a library, use the RegisterLibrary method. Dans le cas de bibliothèque de code managé, utilisez la RegisterSimpleLibrary (méthode).In the case of managed code library, use the RegisterSimpleLibrary method.

Pour annuler l’inscription d’une bibliothèque, utilisez le UnregisterLibrary (méthode).To unregister a library, use the UnregisterLibrary method.

Pour obtenir une référence pour le Gestionnaire d’objets, IVsObjectManager2, passez le SVsObjectManager service ID à GetService (méthode).To obtain a reference to the object manager, IVsObjectManager2, pass the SVsObjectManager service ID to GetService method.

Inscription et la désinscription d’une bibliothèque avec le Gestionnaire d’objetsRegistering and unregistering a Library with the Object Manager

Pour inscrire une bibliothèque avec le Gestionnaire d’objetsTo register a library with the object manager

  1. Créer une bibliothèque.Create a library.

    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. Obtenir une référence à un objet de la IVsObjectManager2 de type et appeler le RegisterSimpleLibrary (méthode).Obtain a reference to an object of the IVsObjectManager2 type and call the RegisterSimpleLibrary method.

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

Pour annuler l’inscription d’une bibliothèque avec le Gestionnaire d’objetsTo unregister a library with the object manager

  1. Obtenir une référence à un objet de la IVsObjectManager2 de type et appeler le UnregisterLibrary (méthode).Obtain a reference to an object of the IVsObjectManager2 type and call the UnregisterLibrary method.

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

Voir aussiSee Also

Extensibilité de Service de langage hérité Legacy Language Service Extensibility
Prise en charge des outils de consultation du symbole Supporting Symbol-Browsing Tools
Guide pratique pour exposer des listes de symboles fournies par la bibliothèque au Gestionnaire d’objetsHow to: Expose Lists of Symbols Provided by the Library to the Object Manager