Wie lade ich ApplicationSettings aus einer geladenen App.config-Datei ab?

8

Ist es möglich, auf die Werte im Abschnitt applicationSettings einer geladenen app.config-Datei zuzugreifen?

Ich habe ein Beispiel gefunden Wie kann ich es abrufen? appSettings , aber ich kann nicht herausfinden, wie Sie auf diese Weise auf applicationSettings zugreifen können.

    
al-bex 20.01.2010, 12:25
quelle

3 Antworten

10

Die applicationSettings sind zur Laufzeit readonly . Sie können diese entweder über einen Texteditor in der Datei app.config direkt festlegen / ändern, es wird jedoch empfohlen, die Projekteigenschaften in Visual Studio zu öffnen und die Registerkarte "Einstellungen" auszuwählen. Es ist wichtig, den richtigen Umfang festzulegen:

  • Wenn die Einstellungen für die gesamte Anwendung gelten (für alle Benutzer), wählen Sie "Anwendung" als Bereich.
  • Wenn jeder Benutzer individuelle Einstellungen haben soll (gebunden an das Benutzerprofil), dann wählen Sie "Benutzer"

Wenn Sie beispielsweise myOwnSetting in Ihrem Projekt WindowsFormsTestApplication1 wie folgt erstellen:

fügt der App.config-Datei der Anwendung Folgendes hinzu:

%Vor%

Visual Studio erstellt C # -Code, um automatisch auf diese Einstellung zuzugreifen (deshalb sollten Sie dies in den Projekteigenschaften und nicht über den Texteditor tun). Nachdem Sie die Änderungen gespeichert haben, können Sie den Wert in demselben Namespace nachlesen die Anwendung einfach über den folgenden Code:

%Vor%

Wenn Sie in der obigen Liste applicationSettings angeben, wird die Zeichenfolge "Hi there!" für die Variable currentValue .

Hinweis Wenn Sie myOwnSetting für den Bereich "Benutzer" erstellt haben, wird er stattdessen in einem Abschnitt mit dem Namen <userSettings> gespeichert von <applicationSettings> , aber Sie können immer noch mit der obigen Codezeile darauf zugreifen.

Ein weiterer Unterschied zwischen scope "Benutzer" -Einstellungen besteht darin, dass Sie über Lese- / Schreibzugriff verfügen, d. h. Folgendes ist zulässig:

%Vor%

Wenn Sie dasselbe mit dem Geltungsbereich von "myOwnSetting" für "Application" versuchen, würde dies zu einem Kompilierungsfehler führen, der Ihnen mitteilt, dass es schreibgeschützt ist.

Wenn Sie die Anwendung neu starten, werden Sie bemerken, dass sich myUserSetting auf den Wert "Etwas anderes" geändert hat - aber der alte Wert befindet sich immer noch in der app.config. Warum ist das so? Der Grund ist, dass es als Standardwert betrachtet wird - und wie bereits erwähnt, ist der Bereich "Benutzer" an das Benutzerprofil gebunden. Als Folge wird der Wert "Something else" in

gespeichert %Vor%

in einer Datei mit dem Namen User.config , die folgendermaßen aussieht:

%Vor%

Sie können den Pfad nicht genau angeben, da er automatisch von .NET Framework erstellt wird und auf Ihrem PC anders aussieht. Sie können jedoch sehen, dass USERID die Windows-Benutzer-ID Ihres aktuellen Benutzers ist, FIRMNAME Teil der von Ihnen angegebenen Assembly-Informationen ist und der Assemblyname und die Version auch im Pfad verwendet werden.

Hinweis:

  • Die Deklaration <sectionGroup> mit <section> ist obligatorisch und ihr Namensattribut muss mit dem Namespace übereinstimmen. Der Namespace muss in der Konfiguration genau einmal vorkommen, und es ist nur ein applicationSettings -Abschnitt erlaubt.

  • Wie Sie in der Konfigurationsdatei sehen konnten, wird der Namespace dort explizit erwähnt ( WindowsFormsTestApplication1.Properties.Settings ). Wenn Sie auf die Einstellungen von Code zugreifen möchten, der sich nicht im selben Namespace befindet, müssen Sie möglicherweise eine vollständig qualifizierte Referenz verwenden. Allerdings sollten Sie vorsichtig sein, wenn Sie den gesamten Abschnitt <applicationSettings>...</applicationSettings> von der Konfiguration einer Anwendung in einen anderen kopieren - Sie müssen den Namespace in der Zielkonfiguration möglicherweise später ändern.

  • Wenn Sie den Einstellungs-Designer (Registerkarte "Einstellungen" in Ihrem Projekt) verwenden, wird eine Datei mit dem Namen Settings.Settings erstellt (zusammen mit Settings.Designer.cs für den Zugriff auf die Sitzungen über C #). Code) im Bereich Eigenschaften Ihres Projekts. Dies ist eine Kopie der Einstellungen, da sie auch in Ihrer Datei Web.config oder App.config gespeichert wird (abhängig von Ihrem Projekttyp, nur für die Einstellungen des Anwendungsbereichs - werden die Einstellungen für den Benutzerbereich basierend auf dem Benutzerprofil gespeichert). Sie können zusätzliche *.settings -Dateien erstellen und sie verwenden (wie es hier beschrieben wird ).

  • Wenn Sie nicht mit dem Einstellungsdesigner arbeiten oder ein Tool wie LinqPad verwenden >, müssen Sie möglicherweise einen anderen Ansatz verwenden. Bedenken Sie Folgendes:

    %Vor%

    Sie können den Stringtyp applicationSettings lesen, indem Sie die Konfiguration als XDocument behandeln. Das angegebene Beispiel beschränkt sich auf den Zeichenfolientyp und Sie können die Einstellung wie folgt aus dem obigen Beispiel app.config abrufen:
    var value=GetApplicationSetting("myOwnSetting", "WindowsFormsTestApplication1.Properties.Settings");
    Ebenso können Sie für den Standardabschnitt <userSettings> eine ähnliche Funktion GetUserSetting erstellen: Kopieren Sie einfach den obigen Code, benennen Sie den Funktionsnamen um und ersetzen Sie applicationSettings in xPathStr by userSettings .

  • Für Benutzereinstellungen ist eine Upgrade-Methode verfügbar, die hier beschrieben wird. Weitere Details zum Speicherort der Benutzereinstellungen finden Sie dort .

  • Der Abschnitt <appSettings> in der Konfiguration funktioniert anders, da der Bereich "Benutzer" und "Anwendung" nicht unterschieden wird und verschiedene Datentypen, nur Strings, nicht unterstützt werden. Es ist jedoch möglich, die Konfigurationsschlüssel / Werte einfach zu lesen und zu schreiben. Wenn Sie sich für den Code interessieren, finden Sie ihn hier (auf stackoverflow):
    Lesen / Schreiben Konfigurationseinstellungen von appSettings

  • Wenn Sie sich nicht sicher sind, ob Sie AppSettings oder applicationSettings verwenden sollen, lesen Sie dies , bevor Sie sich entscheiden.

Matt 14.03.2012, 14:56
quelle
4

Wie haben Sie die Einstellungen erstellt? Verwenden des VS-Einstellungs-Designers? Wenn dies der Fall ist, sollten Sie eine stark typisierte Klasse für den Zugriff darauf erstellen. Dies geschieht normalerweise mit Properties.Settings.Default.SettingName

Ich denke, dass es vorzuziehen ist, die applicationSettings anstelle von appSettings zu verwenden, aber die Anwendungseinstellungen sind nur zur Laufzeit lesbar, dh Sie können sie nicht aus Ihrem Code erstellen, aber es ist möglich, appSettings zur Laufzeit zu erstellen und hinzuzufügen. Ich habe eine Frage zu dem Unterschied gestellt

Sie finden weitere Informationen von msdn

    
Sam Holder 20.01.2010 12:34
quelle
3
    Sie könnten die Konfigurationsdatei in XmlDocument laden und die applicationSettings abrufen     aus dem dom-Objekt.     Hier ist ein Beispiel, das ich gefunden habe, um die Konfigurationsdatei in das dom-Objekt zu laden:

%Vor%     
golan 16.08.2012 15:45
quelle