none
Sobre user.config ¿Me pueden dar alguna sugerencia para resolver lo siguiente? RRS feed

  • Pregunta

  • Verán, he implementado una rutina en el evento Load de un formulario de inicio que lee valores del archivo de configuración del proyecto con líneas más o menos así:

    cNombre = My.Settings.Nombre

    Si la lectura falla asumo que user.config está dañado (usando Try Catch). La cosa es que si eso ocurre restauro una copia y reintento hacer la operación. 

    Lo anterior funciona parcialmente: La copia se restaura pero al reintentar la operación sigue saliendo el mismo error como si no se hubiese restaurado nada, pero si salgo de la aplicación y la vuelvo a ejecutar ya se ejecuta normalmente usando el archivo restaurado.

    Me parece que está faltando una suerte de refresco de los datos o algo parecido ¿qué me sugieren hacer para que vuelva a tomar los datos del archivo restaurado sin tener que reiniciar otra vez el programa?

    Nota: Cabe mencionar que para hacer pruebas daño el user.config añadiendo cualquier texto a su contenido, eso hace de que falle la lectura de sus ítems.

    lunes, 20 de mayo de 2019 19:53

Respuestas

  • Internamente la llamada a My.Settings se traduce en una llamada a System.Configuration. Y el subsistema de configuración guarda un caché del fichero .config. Es decir, la primera vez lo carga en memoria y luego las sucesivas llamadas que se hagan (por ejemplo, My.Settings.Nombre, My.Settings.Apellido, etc.) se resuelven desde la copia en memoria, sin volver a leer el archivo. Seguramente por ese motivo sigue fallando cuando restauras la copia en disco, ya que no la lee sino que sigue usando la que cargó en memoria al principio.

    Creo que lo más sencillo para solucionarlo es llamar a My.Settings.Reload.

    https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/objects/my-settings-object

    Si eso fallase, otra opción que se me ocurre es prescindir por completo del System.Configuration (o My.Settings, que es lo mismo) y leer directamente el user.config desde disco como fichero XML. Esto sí que te permite sin ninguna dificultad volverlo a leer después de restaurarlo.

    • Propuesto como respuesta Carlos_Ruiz_M lunes, 20 de mayo de 2019 22:21
    • Marcado como respuesta James2016-2 martes, 21 de mayo de 2019 8:05
    lunes, 20 de mayo de 2019 21:57