2009-06-28 8 views
8

Así que tengo algunas configuraciones que son del alcance del usuario , pero por alguna razón, no se guardan en el archivo .exe.config. Hago lo siguiente:¿Por qué la configuración de mi aplicación no se conserva?

Properties.Settings.Default.Email = "[email protected]"; 
Properties.Settings.Default.Save(); 

Sin embargo, miro el archivo de configuración en la carpeta de depuración y todavía es el valor por defecto que puse en el estudio visual. ¿Estoy haciendo esto mal?

Respuesta

13

La configuración del usuario es específica del usuario, por lo que no se guardará en el archivo .exe.config, que es de todo el sistema.

A partir de los documentos de LocalSettingsProvider:

configuración de ámbito de aplicación y la configuración de ámbito de usuario por defecto son almacenan en un archivo llamado application.exe.config, que es creado en el mismo directorio como el archivo ejecutable . Los ajustes de configuración de la aplicación son de solo lectura. Datos de usuario específicos se almacenan en un archivo llamado username.config, almacenado en el directorio de inicio del usuario.

Así que para una aplicación UserSettingsTest simplemente ejecuta desde VS en el depurador (de ahí el bit vshost) que terminó con un camino de:

C:\Users\Jon\AppData\Local\UserSettingsTest 
    \UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu 
    \1.0.0.0\user.config 
+1

Tengo WinXP, pero no vi ningún archivo o carpeta en C: \ Documents and Settings \ Ryan \ Datos de la aplicación. es este el lugar correcto? – ryeguy

+0

Um, no estoy seguro en XP. Lo intentaré por la mañana. –

+3

XP será C: \ Documents and Settings \ Ryan \ Configuración local \ Application Data – csjohnst

0

Todos los parámetros de la cobertura de usuario guardado con datos de la aplicación con dentro de una carpeta que indica la versión de su aplicación y el nombre.

Puede ver estas carpetas haciendo clic en "sincronizar" en su cuadro de diálogo "configuración de la aplicación".

En Vista general:

  • C: \ Users [CurrentUser] \ AppData \ Local [CompanyName] [AppName] \ versión
  • C: \ Users [CurrentUser] \ AppData \ Roaming [CompanyName] [AppName] \ versión

hace de esta manera, por las opciones están relacionadas con usuario actual y UAC. En Vista también puede ver que incluso la configuración de toda la aplicación no se almacena en el archivo de configuración.

[CompanyName] y [ProductName] proviene de la configuración de Información de la Asamblea.

15

Si tiene su información de conjunto configurada para generar automáticamente cualquier número de versión (1.0. *), Cada vez que depure su aplicación, el número de versión será diferente, y así creará un nuevo archivo cada vez.

Si este es el caso, tendrá que realizar una actualización en el archivo de configuración:

Properties.Settings.Default.Upgrade() 

También puede establecer un entorno de NeedsUpgrading a true por defecto y el valor false después de realizar una actualización por lo los usuarios finales que no cambian los números de versión cada vez que se inicia la aplicación no estarán Actualizando todo el tiempo

+0

no sabía que había un método llamado upgrade, clean. –

+1

Utilicé este enfoque aquí y tuve éxito: http://bytes.com/topic/c-sharp/answers/522191-how-maintain-user-config-settings-when-upgrading –

+0

¡Respuesta impresionante y elegante punta de NeedsUpgrading! – DefenestrationDay

Cuestiones relacionadas