Partager via


Écriture dans la banque de paramètres utilisateur

Les paramètres utilisateur sont des paramètres accessibles en écriture comme ceux de la boîte de dialogue Outils/Options , des fenêtres de propriétés et de certaines autres boîtes de dialogue. Les extensions Visual Studio peuvent les utiliser pour stocker de petites quantités de données. Cette procédure pas à pas montre comment ajouter Bloc-notes Windows à Visual Studio en tant qu’outil externe en lisant et en écrivant dans le magasin des paramètres utilisateur.

Écriture dans la banque de paramètres utilisateur

  1. Créez un projet VSIX nommé User Paramètres StoreExtension, puis ajoutez une commande personnalisée nommée User Paramètres StoreCommand. Pour plus d’informations sur la création d’une commande personnalisée, consultez Création d’une extension avec une commande de menu

  2. Dans User Paramètres StoreCommand.cs, ajoutez les directives using suivantes :

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    
  3. Dans MenuItemCallback, supprimez le corps de la méthode et récupérez le magasin des paramètres utilisateur, comme suit :

    private void MenuItemCallback(object sender, EventArgs e)
    {
        SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);
        WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    }
    
  4. Découvrez maintenant si Bloc-notes Windows est déjà défini en tant qu’outil externe. Vous devez itérer dans tous les outils externes pour déterminer si le paramètre ToolCmd est « Bloc-notes Windows », comme suit :

    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. Si Bloc-notes Windows n’a pas été défini en tant qu’outil externe, définissez-le comme suit :

    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. Testez le code. N’oubliez pas qu’il ajoute Bloc-notes Windows en tant qu’outil externe. Vous devez donc restaurer le Registre avant de l’exécuter une deuxième fois.

  7. Générez le code et démarrez le débogage.

  8. Dans le menu Outils, cliquez sur Appeler l’utilisateur Paramètres StoreCommand. Cela ajoute Bloc-notes Windows au menu Outils.

  9. Vous devez maintenant voir Bloc-notes Windows dans le menu Outils / Options, puis cliquer sur Bloc-notes Windows doit afficher une instance de Bloc-notes Windows.