Considere que tenemos aplicación .NET Winforms o aplicación de consola. ¿Alguien puede decirme qué sucederá paso a paso hasta que se inicie la aplicación WinForm o la aplicación de consola? Me gustaría saber las partes internas, como cómo se comunicará EXE con Framework, cuál es el papel de CLR, qué sucede en caso de excepción al lanzar la aplicación en sí misma. ...¿Qué sucede cuando el usuario hace clic en el ensamblado .NET (EXE)?
Respuesta
Al hacer doble clic en un montaje .exe .net:
- patadas del cargador de Windows PE en
- Si estás en un Windows> = Windows XP se detectará que el ejecutable es un ejecutable administrado y la remitirá al .net llamando _CoreExeMain en mscoree.dll (_CoreDllMain si hizo doble clic en un .dll administrado). Puede usar el archivo de configuración del ensamblado para saber qué tiempo de ejecución usar.
- Si está en Windows < Windows XP, el archivo .exe contiene una pequeña pieza nativa de código que saltará a _CoreExeMain o _CoreDllMain de mscoree.dll.
- Entonces mscoree.dll inicializa el tiempo de ejecución de .net, dependiendo de la configuración global, el archivo de configuración del ensamblado y lo que no.
- Luego, si es un .exe, JIT compilará su método de punto de entrada y comenzará a ejecutarlo.
Esto es genial. Gracias por tu respuesta Jb Evain! – Sathish
Probablemente desee algo como: Microsoft .NET partes internas
O puesto que no se libera aún: .NET esencial, Volumen I: El Common Language Runtime
http://www.amazon.co.uk/Essential-NET-Microsoft-Development-Paperback/dp/0201734117
Gracias ho. Revisaré los libros – Sathish
El MSCoreEE.dll (mscore Ejecución engine.dll sólo una instancia para una máquina) decir, por ejemplo cuando un ensamblado de .NET/.exe se hace doble clic o puesto en marcha, el sistema operativo se carga el cargador de Windows que se Invertir cargar el encabezado PE (ejecutable portátil) [en el caso de ejecutable Win32, el encabezado PE contendrá la dirección de la rutina de arranque (Main() estática desde donde se cargará y ejecutará el método principal, donde como en .Net, el bootstrap contendrá la dirección de MSCoreEE.Dll que estará presente en C: \ Windows \ System32 \ mscoree.dll que se ejecutará y cargará el tiempo de ejecución .Net para el cual se diseñó el ensamblado .net. Puede haber múltiples versiones de .Net runtime instaladas en la máquina, sin embargo, solo habrá una instancia de mscoreee.dll para cargar los tiempos de ejecución específicos.
El CLR va a crear el primer dominio APP sí mismo y cargar el conjunto (si el conjunto no creó dominios de aplicaciones adicionales en código)
El CLR crea 3 dominios de aplicación internamente 1. Sistema App Domain una . es responsable de cargar los dominios de aplicación Compartida y Predeterminada, también carga mscorelib.dll al dominio de aplicación compartida b. Cree 3 instancias separadas de Excepciones i. Motor fatal excepción ii. Exceso de desbordamiento de pila iii. Excepción de falta de memoria (muy importante, la CLR previene la excepción de "memoria insuficiente", cuando el desarrollador piensa que la aplicación puede quedarse sin memoria y desea escribir la excepción en un archivo de registro, la excepción de falta de memoria se realizará porque no no queda memoria para crear una nueva instancia de esta excepción, por lo tanto, CLR previene esta excepción para uso futuro en la aplicación 2. Dominio de aplicaciones compartidas a. Contiene mscorlib.dll b.Otras bibliotecas comunes que utilizan otros dominios de aplicaciones c. Sin embargo, el desarrollador no puede insertar Dll personalizados en el dominio de aplicación compartida ya que no se puede controlar desde fuera de CLR, CLR aloja estos dll y CLR no puede controlarse cómo está alojado por un desarrollador, aunque es posible usar algunas interfaces COM donde el desarrollador puede alojar el CLR habitual 3. Dominio de aplicación predeterminado a. Todos los archivos binarios del usuario .exe's, Dlls se carga aquí
- 1. ¿Qué sucede cuando .NET 4.0 hace referencia a un ensamblado de .NET 2.0?
- 2. ¿Qué hace collect2.exe?
- 3. Ejecuta otro javascript cuando el usuario hace clic en "ok" en el cuadro de alerta
- 4. cómo mostrar opciones cuando un usuario hace clic en UITableViewCellAccessoryDetailDisclosureButton
- 5. ¿Qué sucede cuando compilo?
- 6. Ocultar en el teclado iOS cuando el usuario hace clic fuera de un cuadro de texto
- 7. ¿Qué sucede en el servidor cuando se cancela una carga de página en el navegador?
- 8. ¿Qué sucede cuando actualizamos una página web?
- 9. Jquery show div cuando se hace clic en el enlace
- 10. Cómo cancelar la navegación cuando el usuario hace clic en un enlace (elemento <a>)?
- 11. ¿Qué sucede cuando hago clic en "Culpar a las diferencias" en el registro de TortoiseSVN?
- 12. Cómo poner la aplicación Java en Systemtray cuando el usuario hace clic en Cerrar ventanas
- 13. Cómo forzar LostFocus cuando se hace clic en el botón
- 14. Pidiendo confirmación cuando se hace clic en el botón "X"
- 15. Cómo borrar JTextField cuando el mouse hace clic en JTextField
- 16. ¿Cómo ejecuto el código PHP cuando un usuario hace clic en un enlace?
- 17. maneja el error ajax cuando un usuario hace clic en actualizar
- 18. Ingrese texto en EditText que luego desaparece cuando el usuario hace clic dentro de él
- 19. ¿Qué sucede cuando presiono el botón ATRÁS del navegador?
- 20. ¿Qué sucede cuando un subproceso de .NET arroja una excepción?
- 21. ¿Qué sucede cuando se inicia una aplicación .net?
- 22. ¿Cómo puedo forzar que un ComboBox estilo DropDownList solo se abra cuando el usuario hace clic en el botón desplegable?
- 23. Cómo descompilar un exe o un dll en el ensamblado
- 24. qué sucede cuando ingresas una URL en el navegador
- 25. ¿Qué sucede cuando un usuario presiona parar en su navegador web?
- 26. Cómo ocultar ventana emergente de Gtk cuando el usuario hace clic fuera de la ventana
- 27. ¿Cómo cerrar un JDialog modal cuando el usuario hace clic fuera de JDialog?
- 28. cómo cerrar una ventana de diálogo de WPF cuando el usuario hace clic fuera de ella
- 29. Cambiar el color de un ancla cuando se hace clic
- 30. ¿Qué sucede cuando edito web.config?
¿Como respuesta de stakoverflow? Hay libros escritos sobre eso que tienen cientos de páginas;) – TomTom
@TomTom - ¡Eso no es muy justo! ... esas son las versiones abreviadas. –
1. Descargue Mono. 2. Compilarlo. 3. Comience bajo un depurador. 4. Solo paso. 5. Repita el paso 4. –