none
Programa no corre en win8 RRS feed

  • Pregunta

  • Hola compañeros, en la empresa que acabo de aterrizar tienen una aplicacion hecha en Visual Studio 2010, la cual hasta la fecha corria perfectamente en Win Xp+Vista+7.

    Pero el otro dia la instalamos en win 8, y una vez instalado, cuando vas arrancar el programa este peta antes de ponerse en marcha. En el debug del Studio 2010 no nos sale ningun problema.

    Cuando peta me da la opcion de debugar con VS, y me sale el siguiente error antes de abrirlo: An unhandled Microsoft .NET Framework exception ocurred in (el nombre del programa). 
    El programa esta configurado con Framework 4 cliente, asi como otros que tienen y he probado de cambiarlo a F. 3.5 y el problema persiste asi que lo descarto por ahi.

    Cuando intento hacer un debug con VS 2013, salta el siguiente error:
    An unhandled exception of type 'System.TypeInitializationException' occurred in NT2IonMeter.exe

    Y una vez paro el debug me salen los siguientes errores: (a partir de la linia 22).
    Creo que se debe algun problema con el mscorlib.dll, porque a nivel de codigo esta todo correcto.

    A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
    A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
    A first chance exception of type 'System.TypeInitializationException' occurred in XXXX.exe
    

    • Editado gerardrev martes, 8 de julio de 2014 7:39
    lunes, 23 de junio de 2014 10:26

Respuestas

  • "gerardrev" escribió:

    > en la empresa que acabo de aterrizar tienen una aplicacion hecha
    > en Visual Studio 2010, la cual hasta la fecha corria perfectamente
    > en Win Xp+Vista+7.
    >
    > Pero el otro dia la instalamos en win 8, y una vez instalado, cuando
    > vas arrancar el programa este peta antes de ponerse en marcha.

    Hola:

    Si la aplicación funciona correctamente en Windows XP, Vista y 7, igual de bien debería de funcionar en Windows 8, siempre y cuando el entorno de ejecución de la aplicación sea el mismo.

    > Cuando intento hacer un debug con VS 2013, salta el siguiente error:
    > An unhandled exception of type 'System.TypeInitializationException'
    > occurred in NT2IonMeter.exe

    Lo único que te puedo decir es que cuando se genera una excepción del tipo TypeInitializationException, suele deberse a que el ensamblado no puede inicializar una clase a la cual se llama y que se encuentra incluida en alguna biblioteca a la que se hace referencia en el proyecto del archivo ejecutable. ¿Qué clase no se puede inicializar? ¡Ni idea!

    > A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

    Entiendo que lo que te está diciendo el mensaje de error es que se ha producido una excepción del tipo FormatException, que puede deberse a que se ha llamado a un método (normalmente al método String.Format) y el formato de un argumento especificado no coincide con el formato del tipo del parámetro que espera el método.

    > A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll

    Y la excepción FileNotFoundException se produce cuando se está intentando acceder a un archivo que no existe.

    Si tienes el proyecto original de esa aplicación, te aconsejaría que abrieras una copia del mismo en el entorno de desarrollo de Visual Studio 2013 instalado en Windows 8, para depurar el proyecto y ver los motivos de que no se pueda ejecutar en Windows 8, porque insisto que, si todo está bien, la aplicación debería de funcionar de la misma manera que lo hace en versiones anteriores del sistema operativo.

    Un saludo


    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.



    lunes, 23 de junio de 2014 11:01
    Moderador
  • El constructor del tipo es incapaz de inicializarlo a partir del argumento recibido. Bien. Pero antes sí podía y ahora no.

    Cambiate de máquina/SO.

    Lo primero que se me ocurre (lo único, bah), es revisar la configuración regional.

    lunes, 23 de junio de 2014 13:11
  • Buenas!

    Es un error al inicializar un tipo y eso suele darse en constructores estáticos. Se queja de un fichero no encontrado y hay también una System.FormatException. Esta última puede ser la causante real del error. Han cambiado la configuración de idioma? No sea que estéis parseando datetimes con el formato español (dd/MM/yyyy) y ahora el Win8 esté en inglés (MM/dd/yyyy). Esto generaría el error indicado.

    Con la info que das pocas causas se pueden aventurar... pero mira el código en los constructores estáticos que tengas y revisa todas las conversiones desde cadena o número decimal (porque el separador de decimales también es distinto) a datetimes o floats/doubles (siempre que los regional settings de los windows sean distintos, claro).

    Lo que me tiene un poco mosca es el FileNotFoundException... Prueba de usar el fusion log viewer (fuslogvwr.exe) para mirar si hay algún binding de assembly que falle (alguna DLL que no se encuentre en el windows 8). 

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    lunes, 23 de junio de 2014 10:44

Todas las respuestas

  • Buenas!

    Es un error al inicializar un tipo y eso suele darse en constructores estáticos. Se queja de un fichero no encontrado y hay también una System.FormatException. Esta última puede ser la causante real del error. Han cambiado la configuración de idioma? No sea que estéis parseando datetimes con el formato español (dd/MM/yyyy) y ahora el Win8 esté en inglés (MM/dd/yyyy). Esto generaría el error indicado.

    Con la info que das pocas causas se pueden aventurar... pero mira el código en los constructores estáticos que tengas y revisa todas las conversiones desde cadena o número decimal (porque el separador de decimales también es distinto) a datetimes o floats/doubles (siempre que los regional settings de los windows sean distintos, claro).

    Lo que me tiene un poco mosca es el FileNotFoundException... Prueba de usar el fusion log viewer (fuslogvwr.exe) para mirar si hay algún binding de assembly que falle (alguna DLL que no se encuentre en el windows 8). 

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    lunes, 23 de junio de 2014 10:44
  • "gerardrev" escribió:

    > en la empresa que acabo de aterrizar tienen una aplicacion hecha
    > en Visual Studio 2010, la cual hasta la fecha corria perfectamente
    > en Win Xp+Vista+7.
    >
    > Pero el otro dia la instalamos en win 8, y una vez instalado, cuando
    > vas arrancar el programa este peta antes de ponerse en marcha.

    Hola:

    Si la aplicación funciona correctamente en Windows XP, Vista y 7, igual de bien debería de funcionar en Windows 8, siempre y cuando el entorno de ejecución de la aplicación sea el mismo.

    > Cuando intento hacer un debug con VS 2013, salta el siguiente error:
    > An unhandled exception of type 'System.TypeInitializationException'
    > occurred in NT2IonMeter.exe

    Lo único que te puedo decir es que cuando se genera una excepción del tipo TypeInitializationException, suele deberse a que el ensamblado no puede inicializar una clase a la cual se llama y que se encuentra incluida en alguna biblioteca a la que se hace referencia en el proyecto del archivo ejecutable. ¿Qué clase no se puede inicializar? ¡Ni idea!

    > A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

    Entiendo que lo que te está diciendo el mensaje de error es que se ha producido una excepción del tipo FormatException, que puede deberse a que se ha llamado a un método (normalmente al método String.Format) y el formato de un argumento especificado no coincide con el formato del tipo del parámetro que espera el método.

    > A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll

    Y la excepción FileNotFoundException se produce cuando se está intentando acceder a un archivo que no existe.

    Si tienes el proyecto original de esa aplicación, te aconsejaría que abrieras una copia del mismo en el entorno de desarrollo de Visual Studio 2013 instalado en Windows 8, para depurar el proyecto y ver los motivos de que no se pueda ejecutar en Windows 8, porque insisto que, si todo está bien, la aplicación debería de funcionar de la misma manera que lo hace en versiones anteriores del sistema operativo.

    Un saludo


    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.



    lunes, 23 de junio de 2014 11:01
    Moderador
  • El constructor del tipo es incapaz de inicializarlo a partir del argumento recibido. Bien. Pero antes sí podía y ahora no.

    Cambiate de máquina/SO.

    Lo primero que se me ocurre (lo único, bah), es revisar la configuración regional.

    lunes, 23 de junio de 2014 13:11
  • Muchas gracias por su respuesta, en cuanto a su sugerencia, de depurarlo con vs 2013, justamente es lo que he hecho, el código que he adjuntado es el resultado de hacer el build del programa en vs 2013, en vs 2010 no da ningún tipo de error/warning y corre perfectamente.

    A su respuesta y alguna mas, el programa lo hemos probado en un win8 de un portátil nuevo (10 dias) y en una maquina virtual con win 8 que he creado solo para la ocasión, es decir para el testeo y resolución del problema así que es un win limpio.

    Voy a seguir analizando el resto de respuestas.
    Gracias a todos!


    • Editado gerardrev miércoles, 25 de junio de 2014 8:21
    miércoles, 25 de junio de 2014 8:11
  • Bueno gracias a todos los que dedicasteis un tiempo en responderme.
    Al final hice el proyecto desde cero en VS 2013, y tube que corregir algunas cosas,. entre ellas y lo que mas problemas daba (vamos el error principal por el cual no corria el programa), era que tenias que elegir en un desplegable si querias 3 4 o 5 labels para ver unas lecturas, cuando seleccionabas 3, te salian los datos por estos 3, pero el 4o y 5o quedaban como NULL y cuando el programa llegaba al null petaba.

    Como no podia inicializarlos a 0 porque 0 de por si es un valor "viable" monte unas condiciones para que no tubiese en cuenta los otros labels cuando solo habiamos seleccionado 3; asi para todos los casos.

    Y despues habia un par de problemas mas con unas funciones convert.to, modifique el codigo para poder prescindir de ellas. 
    Lo compile todo con framework 4 e installer 4.5, y creo que eso fue todo, ya funciono.
    martes, 8 de julio de 2014 7:36