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
Utwórz projekt VSIX o nazwie
FindServicesExtension
, a następnie dodaj niestandardowe polecenie o nazwieFindServicesCommand
. Aby uzyskać więcej informacji na temat tworzenia polecenia niestandardowego, zobacz Create an extension with a menu command (Tworzenie rozszerzenia za pomocą polecenia menu)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;
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); }
Skompiluj projekt i rozpocznij debugowanie. Zostanie wyświetlone wystąpienie eksperymentalne.
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.
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); }
Skompiluj projekt i rozpocznij debugowanie.
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.