設定ストアからのサービス情報の取得
設定ストアを使用して、使用可能なすべてのサービスを検索する方法、または特定のサービスがインストールされているかどうかを確認できます。 サービス クラスの型を把握している必要があります。
使用できるサービスを一覧表示する方法
FindServicesExtension
という名前の VSIX プロジェクトを作成し、FindServicesCommand
という名前のカスタム コマンドを追加します。 カスタム コマンドを作成する方法の詳細については、「メニュー コマンドを使用した拡張機能の作成」を参照してください。FindServicesCommand.cs で、次の using ディレクティブを追加します。
using System.Collections.Generic; using Microsoft.VisualStudio.Settings; using Microsoft.VisualStudio.Shell.Settings; using System.Windows.Forms;
構成設定ストアを取得し、Services という名前のサブコレクションを見つけます。 このコレクションには、利用可能なすべてのサービスが含まれます。
MenuItemCommand
メソッドで、既存のコードを削除し、次に置き換えます。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); }
プロジェクトをビルドし、デバッグを開始します。 実験用インスタンスが表示されます。
実験用インスタンスで、[ツール] メニューの [FindServicesCommand の呼び出し] をクリックします。
すべてのサービスを一覧表示するメッセージ ボックスが表示されます。
これらの設定を確認するには、レジストリ エディターを使用します。
特定のサービスを検索する
また、CollectionExists メソッドを使用して、特定のサービスがインストールされているかどうかを確認することもできます。 サービス クラスの型を把握している必要があります。
前の手順で作成したプロジェクトの MenuItemCallback の構成設定ストアで、サービスの GUID によって指定されたサブコレクションが含まれている
Services
コレクションを検索します。 この例では、ヘルプ サービスを検索します。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); }
プロジェクトをビルドし、デバッグを開始します。
実験用インスタンスで、[ツール] メニューの [FindServicesCommand の呼び出し] をクリックします。
「ヘルプ サービスが使用可能:」、その後に True または False が続くメッセージが表示されます。 この設定を確認するには、前の手順で示したように、レジストリ エディターを使用します。