2012-10-24 18 views
65

Ho aggiunto il file App.config nel mio progetto. ho creato due impostazioni da Project> pannello Proprietà> Impostazioni -App.config: User vs Application Scope

enter image description here

ho notato che quando sto aggiungendo un ambiente, posso definire il campo come User o Application. -

  1. utente
  2. Applicazione

se definisco impostando come User va a userSettings sezione,
se definisco impostando come Application va a applicationSettings sezione

App. config

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

Ma, queste impostazioni è possibile accedere allo stesso modo da .cs -

Codice

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

Qual è la differenza tra User e Application portata e in quali circostanze si dovrebbe scegliere tra questi due?

risposta

47

Fondamentalmente, le impostazioni dell'applicazione non possono essere modificate durante l'esecuzione di un programma e le impostazioni utente possono. Queste impostazioni utente dovrebbero quindi essere salvate in modo che all'utente venga presentata un'esperienza familiare quando (s) esegue l'applicazione in seguito.

Modifica: Per esempi, è possibile scrivere l'applicazione con moduli diversi e assicurarsi che il modulo principale utilizzi la versione corretta del modulo di sicurezza.Per questo si dovrebbe impostare un esempio impostando applicazione-campo di applicazione:

SecurityModuleVersion string  Application  v1.21 

Qualche tempo dopo, quando si refactoring il modulo di sicurezza, si potrebbe cambiare il valore per v1.22 quando si distribuisce per garantire la sicurezza sia corretto implementato

D'altra parte, se l'applicazione ha diverse 'skins' con cambiamenti di colore, cambio di font, ecc, allora si può configurare una impostazione qualcosa di simile al seguente utente:

ApplicationSkin  string  User    DefaultSkin 

poi, quando Michelle si trasforma nella pelle che preferisce, l'applicazione ricorda le impostazioni sue. Le proprietà possono apparire così:

ApplicationSkin  string  User    HelloKittySkin 
+0

puoi spiegare con un esempio? –

+12

'HelloKittySkin': P – Dan

+0

Le impostazioni predefinite sono nel file di configurazione, sì? Ma dove sono salvate le impostazioni utente salvate? –

61

Le impostazioni di ambito applicazione sono di sola lettura e possono essere modificate solo in fase di progettazione o modificando il file .exe.config tra le sessioni dell'applicazione. Le impostazioni per l'ambito utente, tuttavia, possono essere scritte in fase di esecuzione, proprio come cambieresti qualsiasi valore di proprietà. Il nuovo valore persiste per la durata della sessione dell'applicazione. È possibile mantenere le modifiche alle impostazioni utente tra le sessioni dell'applicazione chiamando il metodo Settings.Save.

Fonte su MSDN: Using Settings in C#

Impostazioni utente sono in genere di utilizzo per la persistenza delle preferenze utente (ad esempio app preferenze di notifica, ecc). Le impostazioni dell'applicazione sono generalmente per elementi come chiavi API ecc.

Come indicato da @kmote, quando le impostazioni utente vengono modificate e mantenute in fase di esecuzione (tramite settings.Save()), verranno scritte in una cartella all'interno dell'archivio Profilo utente (in genere C: \ Users \ Nome utente \ AppData \ Local \ NomeApp in Windows 7 e versioni successive. Per determinare la posizione del file a livello di codice, vedere this post.

+0

alcun esempio vivo sarebbe molto apprezzato –

+1

Va inoltre sottolineato che le impostazioni degli utenti non possono essere cambiate modificando il file .config tra le sessioni. – kmote

+0

@kmote Certo che puoi! Se la sessione è chiusa, è possibile modificare la configurazione (e quindi l'impostazione utente). Il cambiamento persiste e si riflette nel programma quando avvii di nuovo la sessione ... L'ho provato proprio ora. – Heliac