Udostępnij za pośrednictwem


Pobieranie informacji o usłudze z magazynu ustawień

Możesz użyć magazynu ustawień, aby znaleźć wszystkie dostępne usługi lub określić, czy dana usługa jest zainstalowana. Musisz znać typ klasy usługi.

Aby wyświetlić listę dostępnych usług

  1. Utwórz projekt VSIX o nazwie FindServicesExtension , a następnie dodaj niestandardowe polecenie o nazwie FindServicesCommand. Aby uzyskać więcej informacji na temat tworzenia polecenia niestandardowego, zobacz Create an extension with a menu command (Tworzenie rozszerzenia za pomocą polecenia menu)

  2. W pliku FindServicesCommand.cs dodaj następujące dyrektywy using:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    using System.Windows.Forms;
    
  3. Pobierz magazyn ustawień konfiguracji, a następnie znajdź podkolekcje o nazwie Usługi. Ta kolekcja zawiera wszystkie dostępne usługi. W metodzie MenuItemCommand usuń istniejący kod i zastąp go następującym kodem:

    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. Skompiluj projekt i rozpocznij debugowanie. Zostanie wyświetlone wystąpienie eksperymentalne.

  5. W wystąpieniu eksperymentalnym w menu Narzędzia kliknij pozycję Wywołaj polecenie FindServicesCommand.

    Powinno zostać wyświetlone okno komunikatu z listą wszystkich usług.

    Aby zweryfikować te ustawienia, możesz użyć edytora rejestru.

Znajdowanie określonej usługi

Możesz również użyć CollectionExists metody , aby określić, czy dana usługa jest zainstalowana. Musisz znać typ klasy usługi.

  1. W menuItemCallback projektu utworzonego w poprzedniej procedurze wyszukaj magazyn ustawień konfiguracji dla Services kolekcji zawierającej podkolekcje o nazwie identyfikator GUID usługi. W tym przypadku wyszukamy usługę Pomocy.

    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. Skompiluj projekt i rozpocznij debugowanie.

  3. W wystąpieniu eksperymentalnym w menu Narzędzia kliknij pozycję Wywołaj polecenie FindServicesCommand.

    Powinien zostać wyświetlony komunikat z tekstem Dostępna usługa Pomocy: po której następuje wartość Prawda lub Fałsz. Aby sprawdzić to ustawienie, możesz użyć edytora rejestru, jak pokazano we wcześniejszych krokach.