2011-12-31 45 views
10

Nunca antes lo había pensado; pero recientemente descubrí cómo podía modificar el archivo app.config para agregar/eliminar detectores de rastreo (por ejemplo, para redirigir todo el resultado de Trace.WriteLine a un archivo de texto).¿Cuándo/cómo mi aplicación .NET utiliza su archivo App.Config?

Pero no entiendo muy bien cómo funciona? ¿Alguien puede explicar un poco?

Conozco el código C# correspondiente para hacer lo mismo que la configuración (en este ejemplo) - ¿ese código se genera/ejecuta antes del punto de entrada de mi aplicación?

+1

¿Qué aspecto no entiendes? Cuando el archivo se carga? Cuando se agregan los oyentes de seguimiento? ¿Qué exactamente? – Oded

Respuesta

8

¿ese código se genera/ejecuta antes del punto de entrada de mi aplicación?

Piense en un archivo de configuración como un archivo de texto estándar. Si el código de su aplicación no lee ni hace nada con él, no sucederá nada. Así que, básicamente, cuando defines alguna sección en el archivo app.config, hay algún código en tu aplicación (ya sea en el BCL o personalizado) que en algún momento leerá, analizará e interpretará los valores.

Así que, consideremos el ejemplo de los oyentes de seguimiento. Cuando intenta rastrear algo en su código, la clase Trace subyacente usará el sistema de configuración para verificar los valores que ha definido en app.config. Este sistema de configuración analiza el XML solo una vez y lo almacena como singleton en la memoria para evitar la sobrecarga cada vez. Por lo tanto, es solo la primera vez que intenta rastrear algo que el archivo de configuración se analiza y en llamadas posteriores los valores se leen directamente desde la memoria.

5

La aplicación revisa el archivo.config cada vez que lo ejecuta.

Puede almacenar cualquiera de sus configuraciones en sus archivos app.config, agréguelos o elimínelos dinámicamente.

Aquí tienes ...

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

A continuación, se puede modificar la misma de la siguiente manera

utilizando el espacio de nombres

using System.Configuration; 

Leer el archivo de configuración como

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

y mod ify mediante el uso de esta

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

aceptar y votar hasta si usted encuentra su Anser

3

Como ya otras han explicado. Me gustaría explicar un poco más profundo, espero.

En .NET, su CLR crea un límite virtual para su aplicación. En otras palabras, cuando su aplicación se aloja en CLR, crea una dimensión virtual para que su aplicación se reproduzca. Se llama AppDomain o Application Domain. Esta es la etapa en que su aplicación lee el archivo App.Config para obtener información. Porque a veces su App.Config le dirá a CLR qué tipo de ensambles de tiempo de ejecución debería buscar ex: ensamblajes de CLR 2.0. Esto generalmente se ve si sus aplicaciones de compilación en VS2010 para 2.0 crean primero el proyecto para 4 y luego cambian a objetivo 2.0.

Cuestiones relacionadas