Поделиться через


Запись в хранилище параметров пользователя

Параметры пользователя — это параметры записи, такие как в диалоговом окне "Сервис" и "Параметры ", окна свойств и некоторые другие диалоговые окна. Расширения Visual Studio могут использовать их для хранения небольших объемов данных. В этом пошаговом руководстве показано, как добавить Блокнот в Visual Studio в качестве внешнего средства, прочитав из хранилища параметров пользователя и записав их в хранилище параметров пользователя.

Запись в хранилище параметров пользователя

  1. Создайте проект VSIX с именем User Параметры StoreExtension и добавьте пользовательскую команду с именем User Параметры StoreCommand. Дополнительные сведения о создании настраиваемой команды см. в разделе "Создание расширения с помощью команды меню"

  2. В User Параметры StoreCommand.cs добавьте следующие директивы using:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    
  3. В MenuItemCallback удалите текст метода и получите хранилище параметров пользователя следующим образом:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);
        WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    }
    
  4. Теперь узнайте, установлен ли Блокнот как внешний инструмент. Чтобы определить, является ли параметр ToolCmd "Блокнот", необходимо выполнить итерацию всех внешних средств, как показано ниже.

    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. Если Блокнот не задано как внешнее средство, задайте его следующим образом:

    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. Тестирование кода. Помните, что он добавляет Блокнот как внешний инструмент, поэтому перед запуском реестра необходимо откатить его во второй раз.

  7. Создайте код и запустите отладку.

  8. В меню "Сервис" щелкните "Вызвать пользователя Параметры StoreCommand". Это добавит Блокнот в меню "Сервис".

  9. Теперь вы увидите Блокнот в меню "Сервис" или "Параметры" и выберите пункт Блокнот должен открыть экземпляр Блокнот.