Freigeben über


Exemplarische Vorgehensweise: Verwenden des Einstellungs-Speichers

Obwohl Visual Studio-Einstellungen in der Regel in der Systemregistrierung gespeichert werden, können Sie Einstellungen speichern aus der Registrierung entkoppeln, indem Sie einen Datenspeicher Einstellungen verwenden. Mit dem Festlegen speichers anstelle der Registrierung Bereitstellung vereinfacht und stuft Sicherheit.

Es gibt zwei Arten von Einstellungen gespeichert werden:

  • Konfigurationseinstellungen für die schreibgeschützte Visual Studio- und VSPackage-Einstellungen sind. Visual Studio führt Einstellungen von allen bekannten .pkgdef-Dateien in diesen Speicher zusammen.

  • Benutzereinstellungen, die nicht schreibgeschützte Einstellungen wie die sind, die auf Seiten im Dialogfeld Optionen in den Eigenschaftenseiten und in bestimmten anderen Dialogfeldern angezeigt werden. Visual Studio-Erweiterungen verwenden diese für lokalen Speicher von kleinen Datenmengen.

In dieser exemplarischen Vorgehensweise wird erläutert, wie beide Arten Einstellung verwendet wird.

Das Erstellen Beispiels-Projekt

In diesem Abschnitt wird erläutert, wie ein grundlegendes Erstellen auf Einstellungen.

So erstellen Sie das Beispielprojekt

  1. Erstellen Sie ein Visual Studio Paket Projekt mit dem Namen SettingsStorage.

    Weitere Informationen zum Erstellen eines verwalteten VSPackages finden Sie unter Exemplarische Vorgehensweise: Wenn Sie einen Menübefehl mit der Visual Studio-Paket-Vorlage erstellen erstellt.

  2. Wählen Sie auf der Seite Wählen Sie eine Programmiersprache aus.Visual C#.

  3. Wählen Sie auf der Seite Optionen für das VSPackage auswählenMenübefehl.

  4. Ändern Sie auf der Seite BefehlsoptionenBefehlsname zu Einstellungs-Speicher und Befehls-ID zu cmdidSettingsStorage.

  5. Deaktivieren Sie auf der Seite Testoptionen aktivieren beide Kontrollkästchen, und klicken Sie dann auf Fertig stellen.

  6. Drücken Sie F5, um die experimentelle Instanz von Visual Studio auszuführen.

  7. Klicken Sie in der experimentellen Instanz im Menü Extras auf Einstellungsspeicher.

    Die folgende Meldung angezeigt werden soll.

    Inneres Microsoft.SettingsStorage.SettingsStoragePackage.MenuItemCallback ().

  8. Schließen Sie die experimentelle Instanz.

Es gibt mehrere Möglichkeiten, Text aus einem VSPackage auszugeben. In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie die SettingsStoragePackage.MenuItemCallback-Methode ändert, um die Ergebnisse jedes der folgenden Schritte anzuzeigen.

Verwenden des Konfigurationseinstellungs-Speichers

In diesem Abschnitt wird erläutert, wie verschiedene SettingsManager und SettingsStore-Methode verwendet, um die Konfigurationseinstellungen zu erkennen und anzuzeigen.

Um den Datenspeicher Konfigurationseinstellungen verwenden

  1. Öffnen Sie die SettingsStoragePackage.cs-Datei im Code-Editor.

  2. Fügen Sie am Anfang der Datei die folgenden Zeilen hinzu:

    using System.Collections.Generic;
    using Microsoft.VisualStudio.Settings;
    using Microsoft.VisualStudio.Shell.Settings;
    
  3. Fügen Sie am Anfang der diese Zeilen MenuItemCallback-Methode hinzu:

    SettingsManager settingsManager = new ShellSettingsManager(this);
    SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);
    

    Dies ruft den #ctor-Konstruktor auf und übergibt einen Verweis auf ein VSPackage selbst als IServiceProvider-Parameter. Der Konstruktor gibt ein SettingsManager-Objekt zurück. Die GetReadOnlySettingsStore-Methode gibt ein SettingsStore-Objekt zurück, das ConfigurationSettingsStore benannt ist. Verwenden Sie dieses Objekt, um die Konfigurationseinstellungen zu lesen.

  4. Fügen Sie diese Zeilen nach den im vorherigen Schritt Zeilen hinzu:

    bool isVisualWebDevInstalled = configurationSettingsStore.CollectionExists("InstalledProducts\\Visual Web Developer");
    string message = "Visual Web Developer Installed: " + isVisualWebDevInstalled;
    

    Dadurch sucht den Datenspeicher Konfigurationseinstellungen für die Auflistung InstalledProducts, die den subcollection Visual Web Developer verfügt. Wenn das subcollection gefunden wird, ist die Meldungszeichenfolge auf "true". Andernfalls wird sie auf "False" festgelegt.

  5. Im MessageBox-Aufruf ersetzen Sie den Parameterwert "SettingsStorage" durch den Namen "Nachricht". Die Methode MenuItemCallback Jetzt sollte diesem ähneln:

    private void MenuItemCallback(object sender, EventArgs e)
    {
      SettingsManager settingsManager = new ShellSettingsManager(this);
      SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);
    
      bool isVisualWebDevInstalled = configurationSettingsStore.CollectionExists("InstalledProducts\\Visual Web Developer");
      string message = "Visual Web Developer Installed: " + isVisualWebDevInstalled;
      IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
      Guid clsid = Guid.Empty;
      int result;
    
    Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0, ref clsid, message, 
    //was "SettingsStorage", 
    //string.Format(CultureInfo.CurrentCulture, 
    //"Inside {0}.MenuItemCallback()", 
    //this.ToString()), string.Empty, 0, 
    //OLEMSGBUTTON.OLEMSGBUTTON_OK,
    //OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, 
    //OLEMSGICON.OLEMSGICON_INFO, 0, 
    // false out result));
    }
    
  6. Drücken Sie F5, um die experimentelle Instanz von Visual Studio auszuführen.

  7. Klicken Sie in der experimentellen Instanz im Menü Extras auf Einstellungsspeicher.

    Eine Meldung sollte angezeigt werden und den Text Visual Web Developer installiert: enthalten, das von True oder False folgt.

  8. Schließen Sie die experimentelle Instanz.

Visual Studio implementiert den Einstellungen in der Systemregistrierung Datenspeicher. Aus diesem Grund können Sie den Registrierungs-Editor, z. B. Regedit.exe verwenden, um Konfigurations- und Benutzereinstellungen zu überprüfen.

So fügen Sie einen Registrierungs-Editor verwenden, um die Konfigurationseinstellungen zu überprüfen

  1. Öffnen Sie Regedit.exe oder einen anderen Registrierungs-Editor.

  2. Navigieren Sie zu der HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ \. \ InstalledProducts 10.0Exp_Config

    Hinweis

    Stellen Sie sicher, dass Sie berücksichtigen, die den Schlüssel enthält 10.0Exp_Config und \ \. \ \ 10.0_Config nicht.Wenn Sie die experimentelle Instanz von Visual Studio ausführen, können die Konfigurationseinstellungen in Registrierungshiven "10.0Exp_Config".

  3. Erweitern Sie den Knoten \ Products \ installiert. Wenn die Nachricht in den vorherigen Schritten Visual Web Developer Installed: True ist, \ Products \ installiert sein sollte ein Visual Web Developer-Knoten enthalten. Wenn die Meldung Visual Web Developer Installed: False ist, \ Products \ installiert sein sollte ein Visual Web Developer-Knoten enthalten.

Sie können die CollectionExists-Methode auch verwenden, um zu ermitteln, ob ein bestimmter Dienst installiert wird. Sie müssen den Typ der Dienstklasse kennen.

So bestimmen Sie, ob ein Dienst verfügbar ist

  1. Ersetzen Sie im Code IsVisualWebDevInstalled und der Zuweisungsanweisungen durch die folgenden Zeilen.

    string helpServiceGUID = typeof(SVsHelpService).GUID.ToString("B").ToUpper();
    bool hasHelpService = configurationSettingsStore.CollectionExists("Services\\" + helpServiceGUID);
    string message = "Help Service Available: " + hasHelpService;
    

    Dadurch sucht den Datenspeicher Konfigurationseinstellungen für die Abholservices, der das subcollection verfügt, das durch die GUID des Diensts. Wenn das subcollection gefunden wird, ist die Meldungszeichenfolge auf "true". Andernfalls wird sie auf "False" festgelegt.

  2. Drücken Sie F5, um die experimentelle Instanz von Visual Studio auszuführen.

  3. Klicken Sie in der experimentellen Instanz im Menü Extras auf Einstellungsspeicher.

    Eine Meldung sollte angezeigt werden und den Text Hilfedienst verfügbar: enthalten, das von True oder False folgt. Um diese Einstellung zu überprüfen, können Sie den Registrierungs-Editor, wie in den vorherigen Schritten gezeigt.

  4. Schließen Sie die experimentelle Instanz.

Sie können die GetSubCollectionNames und GetString-Methoden auch verwenden, um die Dienste aufzuführen, die im Datenspeicher Konfigurationseinstellungen registriert werden.

So listen die verfügbaren Dienste

  1. Ersetzen Sie den Code in den vorherigen Schritten durch die folgenden Zeilen.

    string message = "First five services:\n";
    IEnumerable<string> collection = configurationSettingsStore.GetSubCollectionNames("Services");
    int n = 0;
    foreach (string service in collection)
    {
        if (n++ == 5) break;
        message += configurationSettingsStore.GetString("Services\\" + service, "Name", "Unknown") + "\n";
    }
    

    Der GetSubCollectionNames-Methode ruft die Namen der Member der Auflistung von Diensten ab. Die GetString-Methoden rückkehraufrufe die Name-Eigenschaftendaten jedes Members. Wenn die Name-Eigenschaft nicht vorhanden ist, wird der Standardname "Unbekannt" zurückgegeben. Die resultierenden Namen werden in die Meldungszeichenfolge angefügt.

  2. Drücken Sie F5, um die experimentelle Instanz von Visual Studio auszuführen.

  3. Klicken Sie in der experimentellen Instanz im Menü Extras auf Einstellungsspeicher.

    Eine Meldung sollte angezeigt werden und den folgenden Text enthalten.

    Erste fünf Dienste:PL/SQLTypeSystemMicrosoft Visual Basic-CompilerSTestExecutionServiceResX RefactorNotify-Dienst

    Die Liste der Dienste unterscheidet. Um diese Einstellungen zu überprüfen, können Sie den Registrierungs-Editor verwenden.

  4. Schließen Sie die experimentelle Instanz.

Sie können die Konfigurationseinstellungen zurücksetzen, indem Sie das folgende Verfahren verwenden.

So führen Sie ein Rollback der Konfigurationseinstellungen

  1. Klicken Sie auf Start, klicken Sie auf Alle Programme, klicken Sie auf Microsoft Visual Studio 2010 SDK, klicken Sie auf Extras und klicken Sie dann auf Microsoft Visual Studio 2010 Experimentelle Instanz zurücksetzen.

    Ein Befehlsfenster angezeigt wird.

  2. Warten Sie, bis Press any key to continue zurückgegeben hat, und drücken Sie dann die Taste, um das Befehlsfenster zu schließen.

Verwenden des Benutzer-Einstellungs-Speichers

In diesem Abschnitt wird erläutert, wie Notepad Visual Studio als externes Tool hinzu, indem er der Lesevorgänge und Benutzereinstellungen den Speicher geschrieben wird.

Damit Sie diese Installation überprüfen und debuggen können, müssen Sie in der Lage sein, die externen Tool Einstellungen zurückzusetzen. Dazu müssen Sie die ursprünglichen Einstellungen speichern, damit Sie sie nach Bedarf wiederhergestellt werden kann.

Um die externen Tool Speichern von Einstellungen

  1. Öffnen Sie Regedit.exe oder einen anderen Registrierungs-Editor.

  2. Navigieren Sie zu der HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 10.0Exp \ externe Tools \.

    Hinweis

    Stellen Sie sicher, dass Sie berücksichtigen, die den Schlüssel enthält und nicht \ \ 10.0Exp \ 10.0 \.Wenn Sie die experimentelle Instanz von Visual Studio ausführen, werden die Benutzereinstellungen in den Registrierungshiven "10.0Exp".

  3. Der mit der rechten Maustaste auf externe Tools \ \ Unterschlüssel und klicken Sie dann auf Exportieren. Überprüfen Sie, ob Ausgewählte Teilstruktur ausgewählt ist.

  4. Speichern Sie die resultierende externe Tools.reg-Datei.

Um die externen Tool für die Wiederherstellung

  1. Der Registrierungsunterschlüssel \ \ mit der rechten Maustaste auf externe Tools, und klicken Sie dann auf Löschen.

  2. Wenn das Dialogfeld Löschen des Schlüssels bestätigen angezeigt wird, klicken Sie auf Ja.

  3. Klicken Sie mit der rechten Maustaste auf die externe Tools.reg-Datei, klicken Sie auf Öffnen mit, und klicken Sie dann auf Registrierungs-Editor.

Verschiedenes SettingsManager und WritableSettingsStore-Methoden werden verwendet, um Benutzereinstellungen zu erkennen und zu ändern.

So fügen Sie den Benutzer einstellungs Datenspeicher verwenden

  1. Öffnen Sie die SettingsStoragePackage.cs-Datei im Code-Editor.

  2. In der MenuItemCallback-Methode fügen Sie direkt nach der ConfigurationSettingsStore-Ergibt-Anweisung diese Codezeile hinzu:

    WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
    

    Die GetWritableSettingsStore-Methode rückkehraufrufe ein WritableSettingsStore-Objekt benannten userSettingsStore. Sie verwenden dieses Objekt die Benutzereinstellungen zu lesen und zu schreiben.

  3. Nachdem die Zeilen im vorherigen Schritt, diese Zeile hinzu:

    int toolCount = userSettingsStore.GetInt32("External Tools", "ToolNumKeys");
    

    Der GetInt32-Methode durchsucht den Benutzer einstellungs Datenspeicher für die Auflistung von externen Tools und gibt die Daten der ToolNumKeys-Eigenschaft als ganze Zahl zurück. Dies ist die Anzahl von externen bereits installierte Tools.

  4. Nachdem die Zeilen im vorherigen Schritt, diese Zeilen hinzu:

    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;
        }
    }
    

    Die nachfolgenden Methodenaufrufe GetString geben die Eigenschaften der Daten, ToolCmd0ToolCmd1 usw. zurück. Daten für jede Eigenschaft ist der Pfad eines externen Tools. Der IndexOf-Methodenaufruf führt eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung des Befehls für Speicherpfad. die Zeichenfolge "Editor" aus. Wenn das Objekt gefunden wird, wird hasNotepad zu true festgelegt; andernfalls bleibt es false.

  5. Nachdem die Zeilen im vorherigen Schritt die folgenden Zeilen hinzu und zeichenfolgen-Ergibt-Anweisung der Schleife ersetzen, und alle anderen Anweisungen über das Ende foreach.

    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);
    }
    

    Dieser Code verwendet die SetString und SetUInt32-Methoden, um die verschiedenen Eigenschaften zu erstellen, die als Editor externes Tool installieren. Editor ist die Tastenkombination "N" und das Projektverzeichnis als das Startverzeichnis angegeben. Schließlich wird die Anzahl von externen Tools inkrementiert und Benutzereinstellungen zurück in den Speicher geschrieben.

Das externe Tool Editor zum Testen ist jetzt verfügbar.

So testen Sie das externe Tool setup

  1. Drücken Sie F5, um die experimentelle Instanz von Visual Studio auszuführen.

  2. Klicken Sie in der experimentellen Instanz im Menü Extras auf Einstellungsspeicher.

    Eine Meldung sollte angezeigt werden und den Text Editor wird installiert enthalten. Klicken Sie auf OK.

  3. Zeigen Sie im Menü ExtrasEditor.

    Editor wird geöffnet.

  4. Nach dem Editor geöffnet wird, schließen Sie sie.

  5. Zeigen Sie im Menü ExtrasEditor erneut.

    Eine Meldung sollte angezeigt werden und den Text Editor hat bereits installiert enthalten.

  6. Schließen Sie Editor, und schließen Sie dann die experimentelle Instanz.

Um den Test erneut auszuführen, erstellen Sie zuerst die betroffenen Benutzereinstellungen wieder her, wie weiter oben beschrieben in die externen Tool "Einstellungen" wiederherzustellen.

Verwenden des Einstellungs-Speichers von einem anderen Prozess

Diese exemplarische Vorgehensweise zunächst angezeigt, wie ein Manager Einstellungen (SettingsManager-Objekt), VSPackages von der Anwendung selbst als Dienstanbieter.

SettingsManager settingsManager = new ShellSettingsManager(this);

VSPackages-Ausführung in den gleichen Prozess als Visual Studio, aber Sie können den Datenspeicher Einstellungen von einem anderen Prozess auch zugreifen, indem Sie die ExternalSettingsManager-Klasse verwenden.

Um einen Manager Einstellungen von einem anderen Prozess zu erstellen, rufen Sie die CreateForApplication-Methode auf, und übergeben Sie sie der vollständige Pfad der Visual Studio-ausführbaren Datei (devenv.exe). Da Visual Studio keinen vordefinierten Speicherort aufweisen, müssen Sie die Systemregistrierung überprüfen, um den Pfad zu suchen. Diese Informationen sind im HKLM \ SOFTWARE \ Microsoft \ VisualStudio \Version\ InstallDir \ Unterschlüssel.

Um beispielsweise den Datenspeicher Einstellungen für Visual Studio 2010 zuzugreifen, überprüfen Sie HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \. \ InstallDir

Hinweis

Für ein Windows-64-Bit-Betriebssystem ist dieser Unterschlüssel HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10.0 \. \ InstallDir

Die Daten Visual Studio 2010 \ InstallDir \ Eigenschaft ist in der Regel C:\Program Files\Microsoft- Visual Studio 10.0 \ Common7 \ IDE \.

Hinweis

Für Windows 64-Bit-Betriebssystem, diese Daten ist in der Regel C:\Program Dateien (x86-) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \.

Der vollständige Pfad wird erstellt, indem devenv.exe auf diesen Daten angefügt, z.

string AppIDPath = "C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"

Schließlich Aufruf CreateForApplication, dessen Einstellungen managers zu erstellen.

SettingsManager settingsManager = ExternalSettingsManager.CreateForApplication(AppIDPath);

Siehe auch

Weitere Ressourcen

VSPackage-Zustand