Bagikan melalui


Mendapatkan informasi layanan dari penyimpanan pengaturan

Anda dapat menggunakan penyimpanan pengaturan untuk menemukan semua layanan yang tersedia atau untuk menentukan apakah layanan tertentu diinstal. Anda harus mengetahui jenis kelas layanan.

Untuk mencantumkan layanan yang tersedia

  1. Buat proyek VSIX bernama FindServicesExtension lalu tambahkan perintah kustom bernama FindServicesCommand. Untuk informasi selengkapnya tentang cara membuat perintah kustom, lihat Membuat ekstensi dengan perintah menu

  2. Di FindServicesCommand.cs, tambahkan yang berikut ini menggunakan direktif:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    using System.Windows.Forms;
    
  3. Dapatkan penyimpanan pengaturan konfigurasi, lalu temukan subkoleksi bernama Layanan. Koleksi ini mencakup semua layanan yang tersedia. MenuItemCommand Dalam metode , hapus kode yang ada dan ganti dengan yang berikut:

    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. Bangun proyek dan mulai penelusuran kesalahan. Instans eksperimental muncul.

  5. Dalam instans eksperimental, pada menu Alat, klik Panggil FindServicesCommand.

    Anda akan melihat kotak pesan yang mencantumkan semua layanan.

    Untuk memverifikasi pengaturan ini, Anda dapat menggunakan editor registri.

Menemukan layanan tertentu

Anda juga dapat menggunakan metode untuk CollectionExists menentukan apakah layanan tertentu diinstal. Anda harus mengetahui jenis kelas layanan.

  1. Di MenuItemCallback proyek yang Anda buat di prosedur sebelumnya, cari penyimpanan pengaturan konfigurasi untuk Services koleksi yang memiliki subkoleksi yang dinamai oleh GUID layanan. Dalam hal ini kita akan mencari layanan Bantuan.

    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. Bangun proyek dan mulai penelusuran kesalahan.

  3. Dalam instans eksperimental, pada menu Alat, klik Panggil FindServicesCommand.

    Anda akan melihat pesan dengan teks Layanan Bantuan Tersedia: diikuti oleh True atau False. Untuk memverifikasi pengaturan ini, Anda dapat menggunakan editor registri, seperti yang ditunjukkan pada langkah-langkah sebelumnya.