2012-07-15 16 views
10

quiero guardar algunas configuraciones en un archivo de configuración para su uso futuro. estoy tratando de utilizar el código regular que veo en todos los tutoriales -C# - aplicación de configuración no cambia

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.Settings["username"].Value = m_strUserName; 

// I also tried - 
//config.AppSettings.Settings.Remove("username"); 
//config.AppSettings.Settings.Add("username", m_strUserName); 

config.Save(ConfigurationSaveMode.Modified); 
ConfigurationManager.RefreshSection("appSettings"); 

Ahora - Puedo ver que el tiempo de ejecución - el archivo "... vshost.exe.config" en la 'depuración' la carpeta es cambios, tuerca cuando cierro mi aplicación - todos los cambios son eliminados. ¿Qué puedo hacer?

Respuesta

28

Para probar utilizando el archivo de configuración del exe normal, desmarque la casilla "Habilitar el proceso de alojamiento de Visual Studio" en la pestaña "Depurar" en el menú de propiedades del proyecto. Eso hará que Visual Studio deje de usar el archivo vshost.exe para iniciarse y se usará el archivo de configuración correcto.

enter image description here

+0

+1 Buena respuesta Scott, pero prefiero evitar meterme con esto porque tiendo a olvidarme de esta pequeña bandera y algunas veces las consecuencias son muy molestas. http://blogs.msdn.com/b/dtemp/archive/2004/08/17/215764.aspx – Steve

+0

¿Cuál es la diferencia entre vshost y el archivo real? ¿Por qué es tan importante usar la bandera? – TamarG

+0

Lea el enlace Steve proporcionado en su comentario, explica para qué es el proceso vshost. –

9

Al implementar su aplicación a sus usuarios finales, no hay vshost.config.
Sus cambios se aplicarán al exe.config real. Entonces no tienes que preocuparte por esto.

Cuando crea su aplicación en una sesión de depuración, el archivo app.config, presente en su proyecto, se copia en el directorio de salida. Luego, este archivo de configuración también se copia a vshost.config. De esta forma, el contenido de app.config sobrescribe cualquier cambio realizado durante una sesión de depuración en vshost.exe.config.

Sin embargo, permítanme decir que la redacción de este tipo de información en una aplicación de configuración es una mala práctica. El archivo de configuración debe usarse solo para almacenar configuraciones permanentes que generalmente no cambian durante la vida de su aplicación. Las configuraciones de conexión, por ejemplo, son información válida para almacenar allí porque normalmente no las cambia y no desea codificarlas.

Ajustes como el nombre de usuario debe utilizar user.config lugar. Esta configuración es por usuario/por aplicación y permite el acceso de lectura/escritura.

+0

pero debo depurarlo ahora ... y ¿por qué el vshost.config no guardar los cambios? – TamarG

+0

@tamarg Puede probar la respuesta de @ Steve abriendo la carpeta '\ bin' dentro de su carpeta' \ Debug' y ejecutando manualmente el ejecutable. Debe recordar que el proceso de depuración comienza desde los mismos archivos temporales todo el tiempo. –

+0

Pude haber respondido también pero doy +1 a esto! –

Cuestiones relacionadas