Share via


Abrufen von Dienstinformationen aus dem Einstellungsspeicher

Sie können den Einstellungsspeicher verwenden, um alle verfügbaren Dienste zu finden oder zu bestimmen, ob ein bestimmter Dienst installiert ist. Sie müssen den Typ der Dienstklasse kennen.

So listen Sie die verfügbaren Dienste auf

  1. Erstellen Sie ein VSIX-Projekt namens FindServicesExtension , und fügen Sie dann einen benutzerdefinierten Befehl mit dem Namen hinzu FindServicesCommand. Weitere Informationen zum Erstellen eines benutzerdefinierten Befehls finden Sie unter Erstellen einer Erweiterung mit einem Menübefehl

  2. Fügen Sie in FindServicesCommand.cs die folgenden mithilfe von Direktiven hinzu:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    using System.Windows.Forms;
    
  3. Rufen Sie den Konfigurationseinstellungenspeicher ab, und suchen Sie dann die Untersammlung namens "Dienste". Diese Sammlung enthält alle verfügbaren Dienste. Entfernen Sie in der MenuItemCommand Methode den vorhandenen Code, und ersetzen Sie ihn durch Folgendes:

    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. Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Instanz wird geöffnet.

  5. Klicken Sie in der experimentellen Instanz im Menü "Extras " auf "FindServicesCommand aufrufen".

    Es sollte ein Meldungsfeld mit allen Diensten angezeigt werden.

    Um diese Einstellungen zu überprüfen, können Sie den Registrierungs-Editor verwenden.

Suchen eines bestimmten Diensts

Sie können die CollectionExists Methode auch verwenden, um zu bestimmen, ob ein bestimmter Dienst installiert ist. Sie müssen den Typ der Dienstklasse kennen.

  1. Durchsuchen Sie im MenuItemCallback des Projekts, das Sie im vorherigen Verfahren erstellt haben, den Konfigurationseinstellungenspeicher nach der Services Sammlung, die die Untersammlung enthält, die von der GUID des Diensts benannt wurde. In diesem Fall suchen wir nach dem Hilfedienst.

    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. Erstellen Sie das Projekt, und starten Sie das Debugging.

  3. Klicken Sie in der experimentellen Instanz im Menü "Extras " auf "FindServicesCommand aufrufen".

    Es sollte eine Meldung mit dem Text "Hilfedienst verfügbar" angezeigt werden: gefolgt von "True " oder "False". Um diese Einstellung zu überprüfen, können Sie einen Registrierungs-Editor verwenden, wie in den vorherigen Schritten gezeigt.