Il modo più semplice per avere un file di configurazione in un'applicazione C # di Windows Form

StackOverflow https://stackoverflow.com/questions/114527

Domanda

Sono veramente nuovo in .NET e non ho ancora capito come funzionano i file di configurazione.

Ogni volta che cerco su Google ottengo risultati su web.config, ma scrivo un'applicazione Windows Form.

Ho capito che devo usare lo spazio dei nomi System.Configuration ma la documentazione non aiuta.

Come definisco che il mio file di configurazione è XYZ.xml? Oppure ha un & Quot; default & Quot; nome per il file di configurazione? Non l'ho ancora capito.

Inoltre, come posso definire una nuova sezione, devo davvero creare una classe che eredita da ConfigurationSection?

Vorrei solo avere un file di configurazione con alcuni valori come questo:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

C'è un modo semplice per farlo? Puoi spiegare in modo semplice come leggere e scrivere da / verso un semplice file di configurazione?

È stato utile?

Soluzione

Desideri utilizzare un'App.Config.

Quando aggiungi un nuovo elemento a un progetto c'è qualcosa chiamato File di configurazione delle applicazioni. Aggiungilo.

Quindi aggiungi le chiavi nella sezione configurazione / app

Come:

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

Accedi ai membri facendo

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

Funziona in .net 2 e versioni successive.

Altri suggerimenti

Chiarimento delle risposte precedenti ...

1) Aggiungi un nuovo file al tuo progetto (Aggiungi - > Nuovo elemento - > File di configurazione dell'applicazione)

2) Il nuovo file di configurazione verrà visualizzato in Esplora soluzioni come App.Config.

3) Aggiungi le tue impostazioni in questo file usando come modello

quanto segue
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

4) Recuperali in questo modo:

private void Form1_Load(object sender, EventArgs e)
{
    string setting = ConfigurationManager.AppSettings["setting1"];
    string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
}

5) Se compilata, la cartella di output conterrà un file chiamato < assemblyname > .exe.config Questa sarà una copia del file App.Config. Lo sviluppatore non dovrebbe aver bisogno di ulteriore lavoro per creare questo file.

Da una rapida lettura delle risposte precedenti, sembrano corretti, ma non sembra che nessuno abbia menzionato le nuove funzionalità di configurazione in VS 2008. Utilizza ancora app.config (copiato al momento della compilazione in YourAppName.exe.config ), ma esiste un widget UI per impostare le proprietà e specificarne i tipi. Fare doppio clic su Settings.settings nella & Quot del progetto; Properties & Quot; cartella.

La parte migliore è che l'accesso a questa proprietà dal codice è typesafe - il compilatore rileverà ovvi errori come errori di digitazione del nome della proprietà. Ad esempio, una proprietà chiamata MyConnectionString in app.config sarebbe accessibile come:

string s = Properties.Settings.Default.MyConnectionString;

Dovresti creare un file App.config (molto simile a web.config)

È necessario fare clic con il pulsante destro del mouse sul progetto, aggiungere un nuovo elemento, un nuovo " File di configurazione dell'applicazione " ;.

Assicurati di aggiungere usando System.Configuration al tuo progetto.

Quindi puoi aggiungere dei valori

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }

Solo una nota, secondo Microsoft , dovresti usare ConfigurationManager invece di ConfigurationSettings. (vedi la sezione osservazioni)  " La classe ConfigurationSettings fornisce solo compatibilità con le versioni precedenti. Per le nuove applicazioni è necessario utilizzare invece la classe ConfigurationManager o WebConfigurationManager. quot &;

Il nome predefinito per un file di configurazione è [yourexe] .exe.config. Quindi notepad.exe avrà un file di configurazione chiamato notepad.exe.config, nella stessa cartella del programma. Questo è un file di configurazione generale per tutti gli aspetti di CLR e Framework, ma può contenere le tue impostazioni in un nodo <appSettings>.

L'elemento System.Configuration.ConfigurationSettings.AppSettings crea una raccolta di coppie nome-valore a cui è possibile accedere come IConfigurationSectionHandler. Tuttavia, non è possibile salvare nuovamente le modifiche nel file di configurazione.

È anche possibile aggiungere i propri elementi personalizzati a un file di configurazione, ad esempio per definire un'impostazione strutturata, creando una classe che implementa <configSections> e aggiungendola all'elemento ConfigurationSettings.GetConfig del file di configurazione. È quindi possibile accedervi chiamando System.Configuration.ConfigurationManager.

.NET 2.0 aggiunge una nuova classe, App.config, che supporta più file, con sostituzioni per utente dei dati per sistema. Supporta anche il salvataggio delle configurazioni modificate nei file delle impostazioni.

Visual Studio crea un file chiamato <=>, che copia nella cartella EXE, con il nome corretto, quando viene creato il progetto.

Il miglior articolo (IMHO) sulla configurazione dell'applicazione .NET si trova su CodeProject Unraveling the Mysteries of Configurazione .NET 2.0 . E il mio prossimo articolo preferito (più breve) sulle sezioni nei file di configurazione .net è Informazioni sui gestori di sezioni - App .config File .

Nei moduli di Windows, hai un app.config, che è molto simile a web.config. Ma dal momento che vedo che ne hai bisogno sono valori personalizzati, ti suggerisco di usare Impostazioni. Per fare ciò, apri le proprietà del tuo progetto, quindi vai alle impostazioni. Se non esiste un file di impostazioni, avrai un link per crearne uno. Quindi, puoi aggiungere le impostazioni alla tabella che vedi lì, che genererebbe sia l'XML appropriato, sia una classe Settings che può essere utilizzata per caricare e salvare le impostazioni. La classe delle impostazioni sarà denominata come DefaultNamespace.Properties.Settings. Quindi, puoi utilizzare un codice simile a:

using DefaultNamespace.Properties;

namespace DefaultNamespace {
    class Class {
        public int LoadMySettingValue() {
            return Settings.Default.MySettingValue;
        }
        public void SaveMySettingValue(int value) {
            Settings.Default.MySettingValue = value;
        }
    }
}

Sono d'accordo con le altre risposte che ti indicano app.config. Tuttavia, anziché leggere i valori direttamente da app.config, è necessario creare una classe di utilità (AppSettings è il nome che uso) per leggerli ed esporli come proprietà. La classe AppSettings può essere utilizzata per aggregare le impostazioni di diversi negozi, come i valori di app.config e le informazioni sulla versione dell'applicazione dall'assembly (AssemblyVersion e AssemblyFileVersion).

Un modo molto semplice per farlo è usare la tua la tua personalizzazione < codice> Impostazioni classe .

System.Configuration.ConfigurationSettings.AppSettings [" MyKey "];

AppSettings è stato deprecato ed è ora considerato obsoleto. [ link ]

Inoltre la sezione appSettings di app.config è stata sostituita dalla sezione applicationSettings.

Come qualcun altro ha menzionato, dovresti usare System.Configuration.ConfigurationManager [ link ] che è nuovo per .Net 2.0

Quale versione di .Net e VS stai usando?

Quando hai creato il nuovo progetto, dovresti avere un file nella tua soluzione chiamato app.config, che è il file di configurazione predefinito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top