Qual è la differenza tra il file app.config e il file XYZ.settings?

Sono effettivamente in fase di apprendimento di cose relative a .NET e stavo esplorando come salvare l’applicazione. Ho finito per scrivere la mia class che salva le impostazioni in un file XML e poi ho scoperto che .NET stesso supporta il salvataggio delle impostazioni dell’applicazione.

Ma ho trovato 2 modi per farlo. Quando apro la finestra di dialogo aggiungi nuovo elemento in Visual Studio 2008, offre l’opzione per creare il file delle impostazioni (.settings) o un file di configurazione (.config). Qual è la differenza tra entrambi e in quale scenario dovrebbero essere utilizzati?

AGGIORNAMENTO: In ASP.NET Core Land, la configurazione non è più gestita tramite uno di questi – vedere questa fantastica scrittura di Travis Illig con l’az su Microsoft.Extension.Configuration e Microsoft.Extensions.Configuration.Binder che sono effettivamente un superset di tutti Questo


Le impostazioni (sia da un set .settings sia da Configuration.AppSettings ) sono memorizzate nel file .config [insieme a molte altre cose].

La differenza è che la roba di .settings [che è stata aggiunta in .NET 2.0 / VS2005] mette a strati una class fortemente tipizzata in cima a un insieme di impostazioni che appartengono insieme mentre Configuration.AppSettings ti consente semplicemente di recuperare stringhe, obbligandoti a fare qualsiasi conversione e non ha la nozione di default. (la class Configuration è stata effettivamente deviata in un assembly laterale per riflettere questo: è necessario aggiungere un riferimento a System.Configuration in modo esplicito se lo si desidera).

Aggiungendo un .settings al tuo progetto, verrà aggiunto un app.config per ospitare le impostazioni se non ne hai già uno. La class che legge le impostazioni viene generata automaticamente ogni volta che si modifica l’elenco delle impostazioni per il componente / l’applicazione.

Altre caratteristiche di .Settings è la possibilità di designare alcune impostazioni come specifiche dell’utente (e anche di salvare le impostazioni specifiche dell’utente con una singola chiamata).

Il miglior motivo per usare .Settings è generalmente che ottieni la capacità di identificare chiaramente chi sta usando quale impostazione in un codice base seguendo gli usi delle proprietà (e ogni insieme è un blocco separato nel file XML). Configuration.appSettings è più globale nella sua natura – è solo un sacco di proprietà e non sai quale DLL, sottosistema o class dipende da una particolare voce di impostazione. Vedi questo post del blog di Steven Smith per molto altro.

Infine, se non hai ancora letto abbastanza sulla gestione delle impostazioni, non hai intenzione di battere questo post di Rick Strahl sull’argomento per completezza o quantità di idee e angoli.

ALL’INTERNO: C’è anche il componente di configurazione vNext di ASP.NET , delineato in questo articolo che è abbastanza flessibile e offre una diversa angolazione sulla gestione delle impostazioni di configurazione.

Un file di impostazioni è un file di risorse in cui vengono specificate le diverse impostazioni e il loro valore predefinito.

I valori stessi sono configurati nel file di configurazione dell’applicazione (file .config).

Un file di impostazioni non viene mai distribuito, quindi è necessario il file di configurazione per eseguire la configurazione.

Il file app.config è archiviato nella stessa directory dell’app. Gli utenti normali non avranno permessi di scrittura (ad es. In “Programmi”).

Il file delle impostazioni deve essere memorizzato nella directory “AppData” degli utenti (dove ha permessi r / w).

Quindi utilizzare il file delle impostazioni per le opzioni configurabili dall’utente.