Prise en charge des outils de consultation de symbole

L’Explorateur d’objets, l’affichage de classes, l’explorateur d’appels et les outils De résultats des symboles fournissent des fonctionnalités de navigation de symboles dans Visual Studio. Ces outils affichent des arborescences hiérarchiques de symboles et affichent les relations entre les symboles de l’arborescence. Les symboles peuvent représenter des espaces de noms, des objets, des classes, des membres de classe et d’autres éléments de langage contenus dans différents composants. Les composants incluent des projets Visual Studio, des composants .NET Framework externes et des bibliothèques de type (.tlb). Pour plus d’informations, consultez Affichage de la structure du code.

Bibliothèques de navigation de symboles

En tant qu’implémenteur de langage, vous pouvez étendre les fonctionnalités de navigation de symboles Visual Studio en créant des bibliothèques qui suivent les symboles de vos composants et fournissent les listes de symboles au gestionnaire d’objets Visual Studio via un ensemble d’interfaces. Une bibliothèque est décrite par l’interface IVsSimpleLibrary2 . Le gestionnaire d’objets Visual Studio répond aux demandes de nouvelles données provenant des outils de navigation par symboles en obtenant les données des bibliothèques et en l’organisant. Il remplit ou met ensuite à jour les outils avec les données demandées. Pour obtenir une référence au gestionnaire d’objets Visual Studio, IVsObjectManager2transmettez l’ID SVsObjectManager de service à la GetService méthode.

Chaque bibliothèque doit s’inscrire auprès du gestionnaire d’objets Visual Studio, qui collecte les informations sur toutes les bibliothèques. Pour inscrire une bibliothèque, appelez la RegisterSimpleLibrary méthode. En fonction de l’outil qui lance la requête, le gestionnaire d’objets Visual Studio recherche la bibliothèque appropriée et demande des données. Les données se déplacent entre les bibliothèques et le gestionnaire d’objets Visual Studio dans les listes de symboles décrits par l’interface IVsSimpleObjectList2 .

Le gestionnaire d’objets Visual Studio est chargé d’actualiser régulièrement les outils de navigation par symboles pour refléter les données les plus actuelles contenues dans les bibliothèques.

Le diagramme ci-dessous contient un exemple d’éléments clés du processus d’échange de requêtes/données entre une bibliothèque et le gestionnaire d’objets Visual Studio. Les interfaces du diagramme font partie d’une application de code managé.

Data flow between a library and the object manager

Pour fournir les listes de symboles au gestionnaire d’objets Visual Studio, vous devez d’abord inscrire la bibliothèque auprès du gestionnaire d’objets Visual Studio en appelant la RegisterSimpleLibrary méthode. Une fois la bibliothèque inscrite, le gestionnaire d’objets Visual Studio demande certaines informations sur les fonctionnalités de la bibliothèque. Par exemple, il demande les indicateurs de bibliothèque et les catégories prises en charge en appelant les méthodes et GetSupportedCategoryFields2 les GetLibFlags2 indicateurs. À un moment donné, quand l’un des outils demande des données à partir de cette bibliothèque, le gestionnaire d’objets demande la liste de symboles de niveau supérieur en appelant la GetList2 méthode. En réponse, la bibliothèque fabrique une liste de symboles et l’expose au gestionnaire d’objets Visual Studio via l’interface IVsSimpleObjectList2 . Le gestionnaire d’objets Visual Studio détermine le nombre d’éléments figurant dans la liste en appelant la GetItemCount méthode. Toutes les demandes suivantes concernent un élément donné dans la liste et fournissent le numéro d’index de l’élément dans chaque requête. Le gestionnaire d’objets Visual Studio procède à la collecte des informations sur le type, l’accessibilité et d’autres propriétés de l’élément en appelant la GetCategoryField2 méthode.

Il détermine le nom de l’élément en appelant la GetTextWithOwnership méthode et demande les informations d’icône en appelant la GetDisplayData méthode. L’icône s’affiche à gauche du nom de l’élément et représente le type de l’élément, l’accessibilité et d’autres propriétés.

Le gestionnaire d’objets Visual Studio appelle la GetExpandable3 méthode pour déterminer si un élément de liste donné est extensible et a des éléments enfants. Si l’interface utilisateur envoie une requête pour développer un élément, le gestionnaire d’objets demande la liste enfant des symboles en appelant la GetList2 méthode. Le processus se poursuit avec différentes parties de l’arborescence en cours de construction à la demande.

Remarque

Pour implémenter un fournisseur de symboles de code natif, utilisez les interfaces et IVsObjectList2 les IVsLibrary2 interfaces.