App.config: utente vs ambito dell'applicazione


90

Ho aggiunto il file App.config nel mio progetto. Ho creato due impostazioni da Progetto> Proprietà> pannello Impostazioni -

inserisci qui la descrizione dell'immagine

Ho notato che quando aggiungo un'impostazione, posso definire l'ambito come Usero Application. -

  1. Utente
  2. Applicazione

Se definisco l'impostazione come Userva alla userSettingssezione,
se definisco l'impostazione come Applicationva alla applicationSettingssezione

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>

Tuttavia, è possibile accedere a queste impostazioni allo stesso modo da .cs:

Codice

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

Qual è la differenza tra Usere Applicationscope e in quali circostanze si dovrebbe scegliere tra questi due?

Risposte:


72

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 esegue l'applicazione successiva.

Modifica: ad esempio, potresti scrivere la tua applicazione con moduli diversi e devi assicurarti che il tuo modulo principale utilizzi la versione corretta del tuo modulo di sicurezza. Per questo dovresti configurare un'impostazione dell'ambito dell'applicazione, ad esempio:

SecurityModuleVersion  string     Application      v1.21

Qualche tempo dopo, quando si effettua il refactoring del modulo di sicurezza, è possibile modificare il valore in v1.22 durante la distribuzione per garantire l'implementazione della sicurezza corretta

D'altra parte, se la tua applicazione ha 'skin' differenti con cambi di colore, cambi di font ecc., Allora puoi configurare un'impostazione utente simile a quanto segue:

ApplicationSkin        string     User              DefaultSkin

Quindi, quando Michelle cambia la pelle che preferisce, l'applicazione ricorda le sue impostazioni. Le proprietà possono ora essere simili a:

ApplicationSkin        string     User              HelloKittySkin

puoi spiegarlo usando un esempio?
Parag Meshram

1
Le impostazioni predefinite sono nel file di configurazione, sì? Ma dove vengono memorizzate le impostazioni utente salvate?
Kyle Delaney,

7
Le impostazioni dell'app vengono salvate nel file * .exe.config. Le impostazioni utente vengono salvate in c: \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config (dove le versioni successive vengono estratte dal file di assembly). Al caricamento, le impostazioni dell'utente hanno la precedenza sulle impostazioni dell'app.
Schrodo_Baggins

71

Le impostazioni dell'ambito dell'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 dell'ambito utente, tuttavia, possono essere scritte in fase di esecuzione, proprio come si modificherà qualsiasi valore di proprietà. Il nuovo valore persiste per la durata della sessione dell'applicazione. È possibile rendere persistenti le modifiche alle impostazioni utente tra le sessioni dell'applicazione chiamando il metodo Settings.Save.

Origine su msdn: utilizzo delle impostazioni in C #

Le impostazioni dell'utente sono generalmente utili per le preferenze dell'utente persistenti (ad es. Preferenze di notifica dell'app, ecc.). Le impostazioni dell'applicazione generalmente per elementi come chiavi API ecc.

Come notato 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'archiviazione del profilo utente (in genere C: \ Users \ Username \ AppData \ Local \ AppName in Windows 7 e versioni successive ). Per determinare la posizione del file a livello di codice, vedere questo post .


qualsiasi esempio dal vivo sarebbe molto apprezzato
Parag Meshram

1
Va inoltre sottolineato che le impostazioni utente non possono essere modificate modificando il file .config tra le sessioni.
kmote

@kmote Certo che puoi! Se la sessione è chiusa, è possibile modificare la configurazione (e quindi userSetting). Il cambiamento persiste e si riflette nel programma quando si ricomincia la sessione ... L'ho provato solo ora.
Riegardt Steyn

5
@Heliac: avrei dovuto essere più preciso. Hai ragione sul fatto che le impostazioni utente possono essere modificate tra le sessioni. TUTTAVIA, una volta modificati a livello di programmazione (utilizzando Settings.Save()), viene creato un nuovo file di configurazione che viene nascosto / sepolto in C: \ Users [nome utente] \ AppData \ Local \ Microsoft. Da quel momento in poi, ogni volta che viene avviata l'applicazione, le impostazioni dell'utente verranno tratte esclusivamente da quel file e qualsiasi modifica effettuata manualmente in App.config o Settings.settings verrà ignorata.
kmote

C'è un modo per trovare e visualizzare il contenuto di questo file di configurazione utente?
Kyle Delaney,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.