2012-10-24 9 views
65

Ich habe App.config-Datei in meinem Projekt hinzugefügt. Ich habe erstellt zwei Einstellungen von Projekt> Eigenschaften> Panel-Einstellungen -App.config: Benutzer vs Application Scope

enter image description here

Ich habe bemerkt, dass, wenn ich eine Einstellung bin hinzufügen, ich Umfang als User oder Application definieren kann. -

  1. Benutzer
  2. Anwendung

Wenn ich als User define Einstellung es userSettings Abschnitt geht,
wenn ich define Einstellung als Application es applicationSettings Abschnitt

App geht. Konfig

<configuration> 

    <userSettings> 
     <DemoApp.Properties.Settings> 
      <setting name="MySetting1" serializeAs="String"> 
       <value>Value1</value> 
      </setting> 
     </DemoApp.Properties.Settings> 
    </userSettings> 

    <applicationSettings> 
     <DemoApp.Properties.Settings> 
      <setting name="MySetting2" serializeAs="String"> 
       <value>Value2</value> 
      </setting> 
     </DemoApp.Properties.Settings> 
    </applicationSettings> 

</configuration> 

Aber können diese Einstellungen von .cs auf die gleiche Art und Weise zugegriffen werden -

-Code

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1; 
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2; 

Was ist der Unterschied zwischen User und Application Umfang und unter welchen Umständen man zwischen wählen sollten diese zwei?

Antwort

47

Grundsätzlich können Anwendungseinstellungen während der Ausführung eines Programms und Benutzereinstellungen nicht geändert werden. Diese Benutzereinstellungen sollten dann gespeichert werden, damit dem Benutzer eine vertraute Erfahrung präsentiert wird, wenn er die Anwendung als nächstes ausführt.

Bearbeiten: Zum Beispiel könnten Sie Ihre Anwendung mit verschiedenen Modulen schreiben und sicherstellen, dass Ihr Hauptmodul die richtige Version Ihres Sicherheitsmoduls verwendet.Dazu würden Sie eine Anwendung-scope Einstellung zB ein:

SecurityModuleVersion string  Application  v1.21 

Einige Zeit später, wenn Sie das Sicherheitsmodul Refactoring, Sie vielleicht ändern Sie den Wert auf V1.22, wenn Sie die richtige Sicherheit gewährleisten bereitstellen zu werden

Auf der anderen Seite implementiert, wenn Ihre Anwendung hat verschiedene ‚Skins‘ mit Farbänderungen, Änderungen an der Schriftart usw., dann können Sie das Setup einen Benutzer so etwas wie die folgende Einstellung:

ApplicationSkin  string  User    DefaultSkin 

dann, wenn Michelle ändert sich auf die Haut, die sie bevorzugt, erinnert sich die Anwendung ihre Einstellungen. Die Eigenschaften können nun wie folgt aussehen:

ApplicationSkin  string  User    HelloKittySkin 
+0

können Sie mit einem Beispiel erklären? –

+12

'HelloKittySkin': P – Dan

+0

Standardeinstellungen sind in der Konfigurationsdatei, ja? Aber wo sind die gespeicherten Benutzereinstellungen gespeichert? –

61

Anwendungsbereichseinstellungen sind schreibgeschützt und können nur zur Entwurfszeit oder durch Ändern der .exe.config-Datei zwischen Anwendungssitzungen geändert werden. Benutzerbereichseinstellungen können jedoch zur Laufzeit geschrieben werden, genauso wie Sie einen Eigenschaftswert ändern würden. Der neue Wert bleibt für die Dauer der Anwendungssitzung bestehen. Sie können Änderungen an Benutzereinstellungen zwischen Anwendungssitzungen beibehalten, indem Sie die Settings.Save-Methode aufrufen.

Quelle auf Msdn: Using Settings in C#

Benutzereinstellungen sind in der Regel für die Verwendung von Benutzerpräferenzen persistierende (z App Benachrichtigungseinstellungen etc.). Anwendungseinstellungen würden im Allgemeinen für Elemente wie API-Schlüssel usw.

Wie @kmote bemerkt, wenn Benutzereinstellungen geändert und zur Laufzeit (über settings.Save()) beibehalten werden, werden sie in einen Ordner im Benutzerprofilspeicher geschrieben (normalerweise C: \ Users \ Benutzername \ AppData \ Local \ AppName in Windows 7 und höher). Informationen zum programmgesteuerten Bestimmen der Position der Datei finden Sie unter this post.

+0

jede anschauliches Beispiel viel –

+1

würde geschätzt Es sollte auch darauf hingewiesen werden, dass Benutzereinstellungen können nicht durch Bearbeiten der CONFIG-Datei zwischen den Sitzungen geändert werden. – kmote

+0

@kmote Natürlich können Sie! Wenn die Sitzung geschlossen ist, können Sie die Konfiguration (und damit die userSetting) ändern. Die Änderung bleibt bestehen und spiegelt sich im Programm wieder, wenn Sie die Sitzung erneut starten ... Ich habe es gerade getestet. – Heliac