2008-11-17 10 views
6

Tengo una aplicación WinForms .net 3.5 que funciona bien en mi máquina, pero en otra máquina se bloquea inmediatamente con system.io.fileloadexception. Lamentablemente, no hay absolutamente ningún detalle sobre qué archivo no se pudo cargar, por lo que no sé dónde está realmente el problema.Solución de problemas system.io.fileloadexception

Creo que sé cuál podría ser (edición de SQL Server Compact), pero antes de cazar sin rumbo, me pregunto si existe una forma adecuada de averiguar qué causó la excepción fileloadex, que no sea el uso de FileMon desde SysInternals.

El único mensaje de error es:

EventType clr20r3, P1 MyApplication.exe, P2 2.1.0.0, P3 490eca78, P4 MyApplication, P5 2.1.0.0, P6 490eca78, P7 2e, P8 21, P9 system.io.fileloadexception, P10 NIL.

Respuesta

13

¿Activar fusion logging?

This blog entry de Brad Wilson da información sobre qué hacer si eso falla ...

+1

Eché de menos por completo el registrador de fusión. Resolvió mi problema en unos minutos porque los registros son realmente útiles. FUSLOGVW.exe solo se puede copiar a una máquina (no se necesita .NET SDK) y es posible establecer la configuración de registro a través de ella. Magia. ¡Gracias! –

+0

Gracias, estaba recibiendo la misma excepción que Michael, ¡el registrador me ayudó a resolver el problema en minutos! –

6

usted podría intentar hacer su método Main() más robusto para atrapar (y pantalla) la excepción ... like so.

Con frecuencia, el problema es que se ingresan demasiados códigos en el método Main() más externo. JIT tiene que ser capaz de comprender completamente Main(), de lo contrario no se puede ejecutar de su código. Al hacer Main() más simple, tiene una oportunidad. En el ejemplo vinculado, si MainCore() falla: bien, aún podemos detectar la excepción en Main().

Esto funciona porque JIT se realiza método por método ... es decir, MainCore() no está JITted hasta que se invoca, momento en el cual ya tenemos nuestra try/catch en su lugar.

1

Tome el SDK de herramientas de depuración de Microsoft y use windbg o cordbg para adjuntar y ejecutar su aplicación. Esto debería darle al menos una pista de dónde está el problema, si no identifica el problema.

Cuestiones relacionadas