共用方式為


從設定存放區取得服務資訊

您可以了解如何使用設定存放區來尋找所有可用的服務,或判斷是否已安裝特定服務。 您必須知道服務類別的類型。

列出可用的服務

  1. 建立名為 FindServicesExtension 的 VSIX 專案,然後新增名為 FindServicesCommand 的自訂命令。 如需如何建立自訂命令的詳細資訊,請參閱使用功能表命令建立擴充功能

  2. FindServicesCommand.cs 中,新增下列 using 指示詞:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    using System.Windows.Forms;
    
  3. 取得組態設定存放區,然後尋找名為 [服務] 的子集合。 此集合包含所有可用的服務。 在 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);
    }
    
  4. 建置此專案並開始偵錯。 隨即出現實驗執行個體。

  5. 在實驗執行個體中,按一下 [工具] 功能表上的 [叫用 FindServicesCommand]

    您應該會看到一個訊息方塊,其中列出所有服務。

    若要確認這些設定,您可以使用登錄編輯器。

尋找特定服務

您也可以使用 CollectionExists 方法來判斷是否已安裝特定服務。 您必須知道服務類別的類型。

  1. 在您在上一個程序中建立之專案的 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);
    }
    
  2. 建置此專案並開始偵錯。

  3. 在實驗執行個體中,按一下 [工具] 功能表上的 [叫用 FindServicesCommand]

    您應該會看到包含 [說明服務可用:] 這段文字的訊息,後面接著 TrueFalse。 若要確認此設定,您可以使用登錄編輯器,如先前步驟所示。