Compartir vía


Obtención de información del servicio del almacén de configuración

Puede usar el almacén de configuración para buscar todos los servicios disponibles o determinar si se instala un servicio determinado. Debe conocer el tipo de la clase de servicio.

Para enumerar los servicios disponibles

  1. Cree un proyecto VSIX denominado FindServicesExtension y agregue un comando personalizado denominado FindServicesCommand. Para obtener más información sobre cómo crear un comando personalizado, vea Crear una extensión con un comando de menú.

  2. En FindServicesCommand.cs, agregue las siguientes directivas using:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    using System.Windows.Forms;
    
  3. Obtenga el almacén de opciones de configuración y, a continuación, busque la subcollection denominada Services. Esta colección incluye todos los servicios disponibles. En el método , quite el MenuItemCommand código existente y reemplácelo por lo siguiente:

    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. Compile la solución y comience la depuración. Aparece la instancia experimental.

  5. En la instancia experimental, en el menú Herramientas , haga clic en Invocar FindServicesCommand.

    Debería ver un cuadro de mensaje en el que se muestran todos los servicios.

    Para comprobar esta configuración, puede usar el editor del Registro.

Búsqueda de un servicio específico

También puede usar el CollectionExists método para determinar si se instala un servicio determinado. Debe conocer el tipo de la clase de servicio.

  1. En MenuItemCallback del proyecto que creó en el procedimiento anterior, busque el almacén de opciones de configuración de la Services colección que tiene la subcollection denominada por el GUID del servicio. En este caso, buscaremos el servicio de ayuda.

    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. Compile la solución y comience la depuración.

  3. En la instancia experimental, en el menú Herramientas , haga clic en Invocar FindServicesCommand.

    Debería ver un mensaje con el texto Servicio de ayuda disponible: seguido de True o False. Para comprobar esta configuración, puede usar un editor del Registro, como se muestra en los pasos anteriores.