2009-08-10 10 views
9

Estoy usando la aplicación de Windows C# .NET 2.0.El cambio en AppSettings necesita reiniciar mi aplicación, ¿cómo puedo evitarlo?

y estoy usando app.config para la configuración de mi aplicación.

pero el cambio en AppSettings no refleja el tiempo de ejecución, es necesario reiniciar la aplicación.

¿Cómo puedo evitarlo?

Aquí está mi fragmento de código que solía leer y escribir en la Configuración de la aplicación.

estoy leyendo el escenario como este

string temp = ConfigurationManager.AppSettings.Get(key); 

Estoy actualizando el valor como este donde nodo es la configuración actual/appsettings Nodo

node.Attributes["value"].Value = value; 
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

Respuesta

23

Se podría intentar llamar

ConfigurationManager.RefreshSection("appSettings")
para refrescar la sección AppSettings del archivo del disco. Una vez que se hayan actualizado, debería poder leer los nuevos valores.

Acabo de probar esto y de hecho funciona.

+1

+1 Muy genial - ¡No sabía que pudieras hacer eso! –

+4

RefreshSection no funcionará –

+1

Its Working !!! – shahjapan

1

no uso ConfigurationManager a leer la configuración, en lugar de utilizar:

 System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"]; 
+0

Sí, esto también es posible, pero probablemente no sea la forma más eficiente de hacerlo. – shahjapan

+2

aquí también usa ConfigurationManager. – SwissCoder

3

Como alternativa, puede crear un conjunto unitario 'Opciones' a aferrarse a su configuración de la aplicación y realizar su lectura/escribe para usted. Una vez cargado, cambiar el .config no requiere recarga, simplemente establece una propiedad en el singleton y llama a su método .Save().

La versión 'runtime' de su configuración está en singleton, no es necesario leer desde el disco.

+0

+1, en humild my opnion, esa es la mejor solución hasta ahora. – Cleiton

1
ConfigurationManager.RefreshSection("appSettings"); 

works !!

Pero tenga cuidado de que si estamos en modo de depuración, el archivo de configuración se puede llamar xxxxx.vshost.exe.config, donde xxxxx es el nombre del proyecto.

Cuestiones relacionadas