2009-07-29 15 views
24

Cada vez que puedo compilar mi aplicación y cambia el número de versión (no tengo un incremento automático número de compilación), pierdo la configuración app.config configurados por el usuario, ya que están almacenados en la carpeta de datos de programa para una versión específica. Básicamente, cada versión de mi aplicación comienza desde cero en lo que respecta a la configuración del usuario.¿Actualiza automáticamente la configuración del usuario de la versión anterior del archivo app.config?

Si bien esto es una molestia leve en desarrollo, se plantea la pregunta mientras me acerco despliegue/release - si uso el app.config para guardar mis ajustes de usuario, serán la configuración personalizada del usuario lavar con manguera cada vez que instalan una parche que cambia el número de versión de mi aplicación? En caso afirmativo, ¿existe una forma sencilla de "actualizar" la configuración de la versión anterior? Sé que usar HKCU en el registro es otra opción, pero me gusta la facilidad del espacio de nombres My.Settings, y me gustaría quedarme con app.config.

Another SO question pregunta algo similar, aunque la respuesta no parece claro. ¿Configurará mi MSI para que le pida al usuario que actualice sea suficiente para preservar estas configuraciones de nivel de usuario?

Respuesta

34

¿Has mirado ApplicationSettingsBase.Upgrade()? Permite la configuración para actualizar desde una versión anterior utilizando la siguiente llamada:

My.Settings.Upgrade() 
+5

Ese es exactamente el comportamiento que estaba buscando: recupera la copia más reciente de la configuración y la carga. También vale la pena señalar el método ApplicationSettingsBase.GetPreviousVersion, que puede usar para cargar una configuración única de una versión anterior. ¡Gracias! – SqlRyan

1

¿Ha considerado la implementación de ClickOnce? Este tema luego se cubre in depth. IMO, ClickOnce es mucho más fácil tanto para el desarrollador como para el usuario.

+5

ClickOnce es genial hasta que no funciona, y luego la depuración es casi imposible. Solíamos usarlo, y lo reemplazamos con un programa propio tipo "iniciador" porque había demasiadas cosas que podrían salir mal de nuestro control y sin un registro suficiente que dejara al usuario desolado. –

7

No sé por qué pero ni el comando de actualización o la versión anterior obtener parece funcionar para mí. ¿Qué podría estar haciendo mal? ¿Debo llamar a un comando de actualización o algo así? Estoy haciendo esto en la carga de formulario, ¿debería ser un evento de aplicación?

ACTUALIZACIÓN

descubrimos por qué, parece que no funciona cuando se utiliza un número de versión mayor de 4 dígitos. Estaba usando el año 2012 como el número de versión principal. Lo cambié a 12 y funciona como un amuleto, aunque no cumple con el milenio. Todavía tengo 88 años antes de tener que empezar a preocuparme por eso.

Cuestiones relacionadas