c# - todas - ¿Cómo puedo arreglar una aplicación de Windows.NET al estrellarse con el código de excepción: 0xE0434352?
visual studio android c# (11)
Problema:
El código de la aplicación .Net aborta antes de comenzar su ejecución [Aplicación de consola o aplicación de Windows]
Error recibido: Cancelado con el código de error "E0434352"
Excepción : excepción desconocida
Escenario 1:
Cuando una aplicación ya está ejecutada, que ha utilizado algunos de los recursos dependientes y esos recursos todavía están en uso con la aplicación ejecutada, cuando otra aplicación o el mismo exe se desencadena de alguna otra fuente, una de las aplicaciones arroja el error
Escenario 2:
Cuando el planificador o los trabajos automáticos desencadenan una aplicación, puede estar en estado de ejecución en el fondo, mientras tanto, cuando intente volver a activar la misma aplicación, se puede desencadenar el error.
Solución:
Cree una aplicación, cuando y cuando la aplicación libere todos sus recursos tan pronto como se complete. Elimine todo el proceso de fondo una vez que se cierre la aplicación. Compruebe y evite ejecutar la aplicación desde múltiples fuentes como Batch Process, Task Scheduler y herramientas externas al mismo tiempo. Verifique la aplicación y las dependencias de recursos y limpie el código si es necesario.
Creé una aplicación .NET Windows Forms en Visual Studio 2010. También construí un paquete de instalación / instalación correspondiente a través de Visual Studio 2010. Está desarrollado como una aplicación de 32 bits (x86). (Hacemos uso de controles de terceros de Windows Forms que son solo de 32 bits).
Puedo ejecutar el paquete de instalación e implementarlo con éxito en otros entornos de Windows 7 de 64 bits y en cuadros de 32 bits de Windows XP. La aplicación instalada funciona bien en estos.
Sin embargo, cuando intento ejecutar Windows Server 2008 R2 - 64 bit, la aplicación falla al inicio. Se instaló con éxito a través del instalador sin ningún error.
Parece que se bloquea al cargar la aplicación. Puse un cuadro de mensaje como la primera línea en la aplicación para ver si se pasó de la carga. El cuadro de mensaje no aparece, así que supongo que ocurre durante la carga / inicio de la aplicación.
Hasta ahora no he encontrado mucho para seguir. De los Detalles veo lo siguiente:
Exception Code: E0434352
Busqué / busqué en Google para ver si había algo obvio, pero no vi nada. Vi algunas referencias a un posible desbordamiento de pila en el CLR .
La aplicación Windows Forms está construida con las siguientes referencias:
- DevExpress
- Infragistics Winforms controls
- ORACLE DataAccess DLL
- RabbitMQ
¿Cual es el problema? ¿Cómo abordo averiguar esto? ¿Cómo debo depurar para obtener más información útil?
0xE0434352 es el código de excepción para todas las excepciones .NET por lo que no le dirá mucho. ¿Cómo obtuviste este código de excepción? El registro de eventos?
Su mejor opción es usar un depurador para obtener más información. Si el depurador de Visual Studio no lo ayuda, es posible que deba verificar WinDbg con SOS . Vea here y here para una introducción. Deje que rompa la excepción y vea si puede obtener más información sobre el por qué.
Si sospecha que se trata de un problema al cargar ensamblajes, es posible que desee consultar el Registro de Fusion .
Entonces ... Me di cuenta en el visor de eventos que este bloqueo correspondía a un error "System.IO.FileNotFoundException".
Así que disparé ProcMon y noté que uno de los dlls del programa no cargaba vcruntime140. Así que simplemente instalé vs15 redist y funcionó.
Estaba obteniendo esto cuando la aplicación se implementó. En mi caso, elegí "Esta es una aplicación de plena confianza" en la pestaña de seguridad del proyecto, y eso lo solucionó.
Estuve peleando todo el día pidiéndoles a mis usuarios que ejecutaran versiones de depuración del software. Porque parecía que no corría la primera línea. Solo un choque sin información.
Luego me di cuenta de que el error estaba dentro del InitializeComponent del formulario.
La forma de obtener una excepción era eliminar esta línea (o comentarla):
System.Diagnostics.DebuggerStepThrough()
Una vez que te deshagas de la línea, obtendrás una excepción normal.
No estoy seguro de si esto ayudará a alguien o no, pero dado que era mi problema, creo que vale la pena mencionar:
Obtuve este error y resultó ser un problema con la plataforma para la que se creó el EXE. Lo teníamos construyendo para x86, y tenía que ser x64, debido a una referencia de Oracle en el proyecto. Cuando hicimos ese cambio, el problema desapareció. Entonces, mira si tienes conflictos similares.
Obtuvimos este error cuando la cadena de conexión a nuestra base de datos era incorrecta. La clave para resolver esto era ejecutar el dotnet blah.dll que proporcionaba una stacktrace que nos mostraba que la instancia del servidor sql especificado no se podía encontrar. Espero que esto ayude a alguien.
Para solucionar el problema (ya que varias aplicaciones comenzaron a lanzar esta excepción de repente, por ejemplo, CorelDraw X6 es uno), desinstalé el tiempo de ejecución de .NET 4.5 e instalé .NET 4 runtime. Las dos versiones no se pueden instalar una al lado de la otra, pero usan los mismos números de versión en el GAC . Esto causa problemas ya que algunas de las funciones se han depreciado en 4.5.
DLL Hell ha regresado ...
Parece que este error 0xe0434352 se aplica a una serie de errores diferentes.
En caso de que ayude a alguien, encontré este error cuando estaba tratando de instalar mi aplicación en una nueva instalación de Windows 10. Funcionó en otras máquinas, y parecía que la aplicación comenzaría momentáneamente antes de morir. Después de mucho ensayo y error, el problema resultó ser que la aplicación requería DirectX9. Aunque una versión posterior de DirectX estaba presente, tenía que tener la versión 9. Espero que le ahorre a alguien algo de frustración.
Si obtiene ese error del Visor de eventos, debería ver otro evento de error (al menos uno) desde el origen ".NET Runtime". Mire ese mensaje de error, ya que contendrá la información de Exception
.
Una explicación concisa para 0xE0434352 está en la publicación del blog ¿Por qué sigo recibiendo el código de excepción e0434352? como son las instrucciones para la depuración a través de here .