2011-12-31 4 views
10

Non ci avevo mai pensato prima; ma di recente ho imparato come modificare il file app.config per aggiungere/rimuovere i listener di traccia (ad esempio, per reindirizzare tutto l'output di Trace.WriteLine in un file di testo).Quando/Come funziona la mia applicazione .NET con il suo file App.Config?

Ma non capisco come funziona? Qualcuno può spiegare un po '?

Conosco il codice C# corrispondente per fare lo stesso della configurazione (in questo esempio) - questo codice viene generato/eseguito prima del punto di ingresso dell'applicazione?

+1

Quale aspetto non capisci? Quando il file viene caricato? Quando vengono aggiunti gli ascoltatori di traccia? Che cosa esattamente? – Oded

risposta

8

il codice viene generato/eseguito prima del punto di ingresso dell'applicazione?

Pensate a un file di configurazione come un normale file di testo. Se il codice dell'applicazione non legge e non fa nulla, non succederà nulla. Quindi, in pratica, quando definisci una sezione nel file app.config, c'è del codice nella tua applicazione (nel BCL o nel custom) che a un certo momento leggerà, analizzerà e interpreterà i valori.

Quindi, consideriamo l'esempio degli ascoltatori di traccia. Quando si tenta di tracciare qualcosa nel codice, la classe Trace sottostante utilizzerà il sistema di configurazione per verificare i valori definiti in app.config. Questo sistema di configurazione analizza l'XML una sola volta e lo memorizza come singolo nella memoria per evitare l'overhead ogni volta. Quindi, è solo la prima volta che si tenta di tracciare qualcosa che viene analizzato dal file di configurazione e nelle chiamate successive i valori vengono letti direttamente dalla memoria.

5

L'app.config archiviata viene esaminata dall'applicazione ogni volta che viene avviata.

È possibile memorizzare qualsiasi impostazione nei file app.config, aggiungere o rimuovere dinamicamente.

Qui si va ...

<appSettings> 
    <add key="HospitalName" value="HML Hospital" /> 
    <add key="HospitalAddress" value="Madurai" /> 
    <add key="ServerName" value="SMSERVER" /> 
    <add key="DatabaseName" value="HospiCare" /> 
    <add key="DBUserID" value="sa" />  
    <add key="Theme" value ="Blue"/> 
</appSettings> 

Quindi è possibile modificare lo stesso come segue

utilizzando lo spazio

using System.Configuration; 

Leggi il file di configurazione come

string theme=ConfigurationManager.AppSettings("Theme"); 

e mod Ify utilizzando questo

Configuration configFile = ConfigurationManager.OpenExeConfiguration(System.IO.Path.GetFileName(Application.ExecutablePath)); 
configFile.AppSettings.Settings(KeyName).Value = KeyValue; 
configFile.Save(); 

accettare e votare su se trovate il vostro Anser

3

Come già altri hanno spiegato. Vorrei solo spiegare un po 'più a fondo, spero.

In .NET, il CLR crea un limite virtuale per l'applicazione. In altre parole, quando la tua applicazione viene ospitata in CLR, crea una dimensione virtuale per far giocare la tua applicazione. Si chiama AppDomain o Application Domain. Questa è la fase in cui l'applicazione legge il file App.Config per qualsiasi informazione. Perché a volte il tuo App.Config dirà a CLR che tipo di assembly di runtime dovrebbero cercare ex: assembly CLR 2.0 Ciò è solitamente visto se le tue app di build in VS2010 per 2.0 o prima creano il progetto per 4 e poi cambiano a 2.0 target.

Problemi correlati