Získání informací o službě z úložiště nastavení
Úložiště nastavení můžete použít k vyhledání všech dostupných služeb nebo k určení, jestli je určitá služba nainstalovaná. Musíte znát typ třídy služby.
Zobrazení seznamu dostupných služeb
Vytvořte projekt VSIX s názvem
FindServicesExtension
a přidejte vlastní příkaz s názvemFindServicesCommand
. Další informace o tom, jak vytvořit vlastní příkaz, najdete v tématu Vytvoření rozšíření pomocí příkazu nabídky.Do souboru FindServicesCommand.cs přidejte následující direktivy using:
using System.Collections.Generic; using Microsoft.VisualStudio.Settings; using Microsoft.VisualStudio.Shell.Settings; using System.Windows.Forms;
Získejte úložiště nastavení konfigurace a vyhledejte dílčí název Služby. Tato kolekce zahrnuje všechny dostupné služby.
MenuItemCommand
V metodě odeberte existující kód a nahraďte ho následujícím kódem: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); }
Sestavte projekt a spusťte ladění. Zobrazí se experimentální instance.
V experimentální instanci v nabídce Nástroje klikněte na Invoke FindServicesCommand.
Mělo by se zobrazit okno se zprávou se seznamem všech služeb.
K ověření těchto nastavení můžete použít editor registru.
Vyhledání konkrétní služby
Metodu CollectionExists můžete použít také k určení, jestli je nainstalovaná konkrétní služba. Musíte znát typ třídy služby.
V MenuItemCallback projektu, který jste vytvořili v předchozím postupu, vyhledejte v úložišti
Services
nastavení konfigurace kolekci, která má dílčí kolekci pojmenovanou identifikátorem GUID služby. V tomto případě vyhledáme službu nápovědy.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); }
Sestavte projekt a spusťte ladění.
V experimentální instanci v nabídce Nástroje klikněte na Invoke FindServicesCommand.
Měla by se zobrazit zpráva s textovou službou nápovědy k dispozici: za ní hodnota True nebo False. K ověření tohoto nastavení můžete použít editor registru, jak je znázorněno v předchozích krocích.