Obtenir des informations de service à partir de la banque de paramètresGet service information from the settings store

Vous pouvez utiliser la banque de paramètres pour rechercher tous les services disponibles ou pour déterminer si un service particulier est installé.You can use the settings store to find all available services or to determine whether a particular service is installed. Vous devez connaître le type de la classe de service.You must know the type of the service class.

Pour répertorier les services disponiblesTo list the available services

  1. Créez un projet VSIX nommé FindServicesExtension , puis ajoutez une commande personnalisée nommée FindServicesCommand.Create a VSIX project named FindServicesExtension and then add a custom command named FindServicesCommand. Pour plus d’informations sur la création d’une commande personnalisée, consultez créer une extension avec une commande de menuFor more information about how to create a custom command, see Create an extension with a menu command

  2. Dans FindServicesCommand.cs, ajoutez le code suivant à l’aide d’instructions :In FindServicesCommand.cs, add the following using statements:

    using System.Collections.Generic;  
    using Microsoft.VisualStudio.Settings;  
    using Microsoft.VisualStudio.Shell.Settings;  
    using System.Windows.Forms;  
    
  3. Obtenir la banque de paramètres de configuration, puis recherchez le sous-groupe Services nommé.Get the configuration settings store, then find the subcollection named Services. Cette collection inclut tous les services disponibles.This collection includes all the available services. Dans le MenuItemCommand (méthode), supprimez le code existant et remplacez-le par le code suivant :In the MenuItemCommand method, remove the existing code and replace it with the following:

    private void MenuItemCallback(object sender, EventArgs e)  
    {  
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);  
        SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);  
        string message = "Available services:\n";  
        IEnumerable<string> collection = configurationSettingsStore.GetSubCollectionNames("Services");  
        int n = 0;  
        foreach (string service in collection)  
        {  
            message += configurationSettingsStore.GetString("Services\\" + service, "Name", "Unknown") + "\n";  
        }  
    
        MessageBox.Show(message);  
    }  
    
  4. Générez le projet et commencez le débogage.Build the project and start debugging. L’instance expérimentale s’affiche.The experimental instance appears.

  5. Dans l’instance expérimentale, sur le outils menu, cliquez sur FindServicesCommand appeler.In the experimental instance, on the Tools menu, click Invoke FindServicesCommand.

    Vous devez voir une boîte de message répertoriant tous les services.You should see a message box listing all the services.

    Pour vérifier ces paramètres, vous pouvez utiliser l’Éditeur du Registre.To verify these settings, you can use the registry editor.

Rechercher un service spécifiqueFind a specific service

Vous pouvez également utiliser le CollectionExists méthode pour déterminer si un service particulier est installé.You can also use the CollectionExists method to determine whether a particular service is installed. Vous devez connaître le type de la classe de service.You must know the type of the service class.

  1. Dans le MenuItemCallback du projet que vous avez créé dans la procédure précédente, recherchez la banque de paramètres de configuration pour le Services collection qui possède le sous-groupe nommé par le GUID du service.In the MenuItemCallback of the project you created in the previous procedure, search the configuration settings store for the Services collection that has the subcollection named by the GUID of the service. Dans ce cas, nous allons pour le service d’aide.In this case we will look for the Help service.

    private void MenuItemCallback(object sender, EventArgs e)  
    {  
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);  
        SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);  
        string helpServiceGUID = typeof(SVsHelpService).GUID.ToString("B").ToUpper();  
        bool hasHelpService = configurationSettingsStore.CollectionExists("Services\\" + helpServiceGUID);  
        string message = "Help Service Available: " + hasHelpService;  
    
        MessageBox.Show(message);  
    }  
    
  2. Générez le projet et commencez le débogage.Build the project and start debugging.

  3. Dans l’instance expérimentale, sur le outils menu, cliquez sur FindServicesCommand appeler.In the experimental instance, on the Tools menu, click Invoke FindServicesCommand.

    Vous devez voir un message avec le texte aide Service Available : suivie True ou False.You should see a message with the text Help Service Available: followed by True or False. Pour vérifier ce paramètre, vous pouvez utiliser un éditeur du Registre, comme indiqué dans les étapes précédentes.To verify this setting, you can use a registry editor, as shown in the earlier steps.