Udostępnij za pośrednictwem


Zapisywanie w magazynie ustawień użytkownika

Ustawienia użytkownika są ustawieniami zapisywalnymi, takimi jak te w oknie dialogowym Narzędzia/opcje , okna właściwości i niektóre inne okna dialogowe. Rozszerzenia programu Visual Studio mogą używać ich do przechowywania małych ilości danych. W tym przewodniku pokazano, jak dodać Notatnik do programu Visual Studio jako narzędzie zewnętrzne, odczytując dane z magazynu ustawień użytkownika i zapisując je w magazynie ustawień użytkownika.

Zapisywanie w magazynie ustawień użytkownika

  1. Utwórz projekt VSIX o nazwie User Ustawienia StoreExtension, a następnie dodaj niestandardowe polecenie o nazwie User Ustawienia StoreCommand. Aby uzyskać więcej informacji na temat tworzenia polecenia niestandardowego, zobacz Tworzenie rozszerzenia za pomocą polecenia menu

  2. W pliku User Ustawienia StoreCommand.cs dodaj następujące dyrektywy using:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    
  3. W menuItemCallback usuń treść metody i pobierz magazyn ustawień użytkownika w następujący sposób:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);
        WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    }
    
  4. Teraz sprawdź, czy Notatnik jest już ustawiona jako narzędzie zewnętrzne. Aby określić, czy ustawienie ToolCmd ma wartość "Notatnik", należy wykonać iterację we wszystkich narzędziach zewnętrznych w następujący sposób:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);
        WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    
        // Find out whether Notepad is already an External Tool.
        int toolCount = userSettingsStore.GetInt32("External Tools", "ToolNumKeys");
        bool hasNotepad = false;
        CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo;
        for (int i = 0; i < toolCount; i++)
        {
            if (Compare.IndexOf(userSettingsStore.GetString("External Tools", "ToolCmd" + i), "Notepad", CompareOptions.IgnoreCase) >= 0)
            {
                hasNotepad = true;
                break;
            }
        }
    }
    
    
  5. Jeśli Notatnik nie został ustawiony jako narzędzie zewnętrzne, ustaw go w następujący sposób:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);
        WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    
        // Find out whether Notepad is already installed.
        int toolCount = userSettingsStore.GetInt32("External Tools", "ToolNumKeys");
        bool hasNotepad = false;
        CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo;
        for (int i = 0; i < toolCount; i++)
        {
            if (Compare.IndexOf(userSettingsStore.GetString("External Tools", "ToolCmd" + i), "Notepad", CompareOptions.IgnoreCase) >= 0)
            {
                hasNotepad = true;
                break;
            }
        }
    
        string message = (hasNotepad) ? "Notepad already installed" : "Installing Notepad";
         if (!hasNotepad)
        {
            userSettingsStore.SetString("External Tools", "ToolTitle" + toolCount, "&Notepad");
            userSettingsStore.SetString("External Tools", "ToolCmd" + toolCount, "C:\\Windows\\notepad.exe");
            userSettingsStore.SetString("External Tools", "ToolArg" + toolCount, "");
            userSettingsStore.SetString("External Tools", "ToolDir" + toolCount, "$(ProjectDir)");
            userSettingsStore.SetString("External Tools", "ToolSourceKey" + toolCount, "");
            userSettingsStore.SetUInt32("External Tools", "ToolOpt" + toolCount, 0x00000011);
    
            userSettingsStore.SetInt32("External Tools", "ToolNumKeys", toolCount + 1);
        }
    }
    
  6. Przetestuj kod. Pamiętaj, że dodaje Notatnik jako narzędzie zewnętrzne, dlatego należy wycofać rejestr przed uruchomieniem go po raz drugi.

  7. Skompiluj kod i rozpocznij debugowanie.

  8. W menu Narzędzia kliknij pozycję Wywołaj użytkownika Ustawienia StoreCommand. Spowoduje to dodanie Notatnik do menu Narzędzia.

  9. Teraz powinien zostać wyświetlony Notatnik w menu Narzędzia /Opcje i kliknięcie Notatnik powinno spowodować wyświetlenie wystąpienia Notatnik.