none
error xmlexception después de falla en Windows 10 RRS feed

  • Pregunta

  • Hola amigos:

    Deseándoles felices fiestas, aprovecho para plantear un problema que se plantea cada vez que el Windows 10 decide clavarse y reiniciarse, solo que afecta siempre diferentes sectores del compilado.

    Estoy desarrollando una aplicación en VS 2012 y por segunda vez en 3 meses, el Windows 10 se reinició por una falla interna, y luego no pude recuperar el desarrollo como estaba. Algo cambió en algún archivo para que me de como error lo siguiente:

    Este error no me permite ejecutar la aplicación ya que al inicio desconoce todas las variables Setting.

    He probado compilar todo nuevamente, eliminar el directorio bin, eliminar el directorio proyect, y nada. Cuando hago correr el proyecto vuelve a clavarse en este archivo XML que no se cuál es.

    Gracias y felices fiestas.


    Juan Carlos

    jueves, 24 de diciembre de 2015 13:08

Respuestas

  • "Juan Carlos Valero" preguntó:

    > He probado compilar todo nuevamente, eliminar el directorio bin,
    > eliminar el directorio proyect, y nada. Cuando hago correr el
    > proyecto vuelve a clavarse en este archivo XML que no se cuál es.

    Hola, Juan Carlos:

    Como parece ser que la propiedad TagAccesoPerso pertenece al objeto My.Settings, a la cual le has definido un ámbito de Usuario (Global.System.Configuration.UserScopedSettingAttribute), entiendo que el archivo de configuración llamado user.config se habrá guardado en la carpeta AppData\Local correspondiente a la cuenta del usuario que esté ejecutando la aplicación.

    Por ejemplo, para una cuenta de usuario llamada CuentaUsuario y un nombre de aplicación llamado WindowsApplication1.exe con versión 1.0.0.0, el archivo user.config lo podrás localizar en una carpeta cuya ruta es parecida a la siguiente:

    C:\Users\CuentaUsuario\AppData\Local\WindowsApplication1\WindowsApplication1.exe_Url_kyjidcryswmndgos3kep5xd1vzewunjb\1.0.0.0

    El valor de la cadena "_Url_kyjidcryswmndgos3kep5xd1vzewunjb" existente en el nombre de la aplicación cambiará aleatoriamente cada vez que compiles tu aplicación. Indicarte igualmente que la carpeta AppData se encuentra por defecto oculta en el sistema de archivos.

    > Ocurrió XmlException
    > '.', valor hexadecimal 0x00, es un carácter no válido. línea 15, posición 1

    Por el mensaje de error que obtienes, me cuesta creer que el motivo de ello se deba al valor de la propiedad TagAccesoPerso existente en el archivo user.config comentado, porque la propiedad la tienes definida como numérica Short, por lo que a ésta no se le puede asignar el carácter '.'. Y aún asignándole intencionadamente dicho valor, a la hora de leerlo desde tu aplicación obtendrás el valor 0, ya que es el que le has asignado por defecto a dicha propiedad en el atributo DefaultSettingValueAttribute:

       Global.System.Configuration.DefaultSettingValueAttribute("0")

    La verdad es que no sabría decirte exactamente a qué se puede deber el error XmlException que obtienes, porque si dices que has recompilado nuevamente tu aplicación, digo yo que el archivo user.config se habrá generado de nuevo en otra carpeta con diferente nombre existente C:\Users\CuentaUsuario\AppData\Local\WindowsApplication1\ con los valores por defecto al ejecutar la aplicación.

    Prueba a renombrar el archivo user.config para ver lo que sucede. ;-)

    Una pregunta. ¿Por casualidad tienes desactivada en tu proyecto la instrucción Option Strict? Si es así, actívala a nivel del proyecto entero. Para ello, abre las propiedades del proyecto, y en la pestaña Compilar establece el valor On en el control ComboBox llamado Option Strict.

    Lo mismo al activar dicha opción no puedes ni tan siquiera compilar el ejecutable hasta que no subsanes todos los errores de conversión que te aparecerán. ;-)

    Un saludo y ¡Feliz Navidad!


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    jueves, 24 de diciembre de 2015 17:02
    Moderador

Todas las respuestas

  • "Juan Carlos Valero" preguntó:

    > He probado compilar todo nuevamente, eliminar el directorio bin,
    > eliminar el directorio proyect, y nada. Cuando hago correr el
    > proyecto vuelve a clavarse en este archivo XML que no se cuál es.

    Hola, Juan Carlos:

    Como parece ser que la propiedad TagAccesoPerso pertenece al objeto My.Settings, a la cual le has definido un ámbito de Usuario (Global.System.Configuration.UserScopedSettingAttribute), entiendo que el archivo de configuración llamado user.config se habrá guardado en la carpeta AppData\Local correspondiente a la cuenta del usuario que esté ejecutando la aplicación.

    Por ejemplo, para una cuenta de usuario llamada CuentaUsuario y un nombre de aplicación llamado WindowsApplication1.exe con versión 1.0.0.0, el archivo user.config lo podrás localizar en una carpeta cuya ruta es parecida a la siguiente:

    C:\Users\CuentaUsuario\AppData\Local\WindowsApplication1\WindowsApplication1.exe_Url_kyjidcryswmndgos3kep5xd1vzewunjb\1.0.0.0

    El valor de la cadena "_Url_kyjidcryswmndgos3kep5xd1vzewunjb" existente en el nombre de la aplicación cambiará aleatoriamente cada vez que compiles tu aplicación. Indicarte igualmente que la carpeta AppData se encuentra por defecto oculta en el sistema de archivos.

    > Ocurrió XmlException
    > '.', valor hexadecimal 0x00, es un carácter no válido. línea 15, posición 1

    Por el mensaje de error que obtienes, me cuesta creer que el motivo de ello se deba al valor de la propiedad TagAccesoPerso existente en el archivo user.config comentado, porque la propiedad la tienes definida como numérica Short, por lo que a ésta no se le puede asignar el carácter '.'. Y aún asignándole intencionadamente dicho valor, a la hora de leerlo desde tu aplicación obtendrás el valor 0, ya que es el que le has asignado por defecto a dicha propiedad en el atributo DefaultSettingValueAttribute:

       Global.System.Configuration.DefaultSettingValueAttribute("0")

    La verdad es que no sabría decirte exactamente a qué se puede deber el error XmlException que obtienes, porque si dices que has recompilado nuevamente tu aplicación, digo yo que el archivo user.config se habrá generado de nuevo en otra carpeta con diferente nombre existente C:\Users\CuentaUsuario\AppData\Local\WindowsApplication1\ con los valores por defecto al ejecutar la aplicación.

    Prueba a renombrar el archivo user.config para ver lo que sucede. ;-)

    Una pregunta. ¿Por casualidad tienes desactivada en tu proyecto la instrucción Option Strict? Si es así, actívala a nivel del proyecto entero. Para ello, abre las propiedades del proyecto, y en la pestaña Compilar establece el valor On en el control ComboBox llamado Option Strict.

    Lo mismo al activar dicha opción no puedes ni tan siquiera compilar el ejecutable hasta que no subsanes todos los errores de conversión que te aparecerán. ;-)

    Un saludo y ¡Feliz Navidad!


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    jueves, 24 de diciembre de 2015 17:02
    Moderador
  • Buen día Enrique:

    Gracias por contestar, y a Option Strict la tengo activada porque es más fácil trabaja con ella que sin ella. Este proyecto funcionaba perfectamente hasta que se re inició Windows 10.

    Este error me ha sucedido antes luego de instalar el Windows 10, y aparece cuando estoy editando el proyecto. La primera vez me sucedió que se habían eliminado los CrLf del archivo de manifiesto.

    Ahora fuí a ese lugar pero nada. Acabo de probar renombrar el archivo user, pero no veo que este archivo sea el de mi proyecto ya que no tiene el inicio de nombre similar, sino de otro proyecto. El directorio y archivo de mi proyecto "no existe" y esto ya es un indicio de que al reiniciarse el equipo, algo sucedió con ese archivo y que ahora no se está regenerando, por lo menos, en el lugar que se lo busca posteriormente.

    En realidad el error me aparece en cualquiera de las variables, solo que esa es a la que primero recurro en el proyecto por lo que seguramente es un archivo que, o no se encuentra, o está dañado.

    Seguiré buscando las rutas donde se guardan estas configuraciones, pero me llama la atención que no se genere correctamente cuando se compila, y esto sucede con el VS 2012 y el VS 2010.


    Juan Carlos

    sábado, 26 de diciembre de 2015 13:11
  • Mayores Precisiones:

    He tomado una versión anterior (le llamaré B), que funcionaba, y efectivamente la corro y funciona perfectamente. Con esta premisa, luego corro la versión con problemas ("A") pero sigue con el mismo problema.

    No tengo la menor idea de dónde puede encontrarse el archivo con el defecto, ya que como dices, se oculta en rutas  y nombres bastante intrincados.

    En la vez anterior, la solución, probé pasar de a un formulario a la versión anterior, y eso me permitió restaurar la aplicación, pero seguí investigando hasta obtener -con la ayuda de un amigo del foro- la solución al problema.

    Esta vez haré igual, ya que resulta imprescindible obtener la solución a este escollo, que deja paralizado el proyecto.


    Juan Carlos

    sábado, 26 de diciembre de 2015 13:48
  • PROBLEMA RESUELTO

    "Esto no es lo que esperaba como solución"

    Como no pude encontrar solución a este problema, comencé con cargar una versión vieja, a la que probé y funcionaba.

    Luego comencé a cambiarle los formularios viejos por los nuevos que se encontraban en el directorio del proyecto "A"

    Al proyecto "B" le puse un nombre de directorio terminado en "_Old" y pude actualizar la versión a lo que tenía al momento del evento con Windows.

    Decidí al directorio que me había fallado, ponerle al final "_Error" para poder seguirlo después. Al que era proyecto "Old" lo re nombré para que se llame como el original, y al cargarlo y correrlo, me dió el error solo que otro tipo de excepción

    Recurrí al directorio "_Error", lo cargué, y al correrlo no dió ningún error por lo que quedó claro que por alguna razón algún archivo de configuración que toma el nombre del directorio donde estoy trabajando, ha sido grabado con un error y lo replica nuevamente en el mismo sector.

    Cuando volví a ponerle el mismo nombre, repitió el error por lo que solo con cambiar el nombre del directorio donde se encuentra el proyecto, se soluciona el problema.

    Solo espero que sirva para los próximos eventos.

    Gracias Enrique. 


    Juan Carlos

    sábado, 26 de diciembre de 2015 15:16