NGEN se usa para código .NET de compilación en un binario que no requerirá marco .NET para ser instalado cuando se ejecuta el código?
Pregunta
Me leyó el siguiente párrafo en el artículo de Wikipedia sobre el CLR:
Alternativamente, el código CIL puede ser compilado a código nativo en una separada paso previo al tiempo de ejecución utilizando la Generador de imágenes nativas (NGEN). Esta acelera todas las ejecuciones posteriores de la software que el CIL-to-native compilación ya no es necesario.
¿Quiere esto decir que puedo tomar cualquier programa .NET y compilarlo a un binario que será entonces capaz de ejecutar en la máquina eso no ha instalado el .NET Framework?
Solución
No.
Esto significa que usted no tendrá que ejecutar el compilador JIT (Just-In-Time) cuando se ejecuta el código, puesto que ya se convierte en código de máquina por NGen. Los binarios resultantes todavía tienen dependencias en el marco .Net, y esto deben instalarse por separado en la máquina.
Existen herramientas cuál es el paquete los ensamblados de .NET Framework y los incluyen en sus binarios en una forma que no se necesita el marco .Net. Echa un vistazo a http://www.xenocode.com/ . VMWare compró una herramienta llamada Thinstall, que creo que también se puede hacer esto: http: //www.vmware. com / productos / ThinApp / .
Otros consejos
La lectura de la href="http://msdn.microsoft.com/en-us/library/6t9t5wcf(VS.80).aspx" rel="nofollow noreferrer"> MSDN página para Ngen donde dice:
Ngen.exe crea imágenes nativas, que son archivos que contienen el código de máquina del procesador específico compilado, y los instala en la memoria caché de imágenes nativas en el equipo local. El tiempo de ejecución puede utilizar las imágenes nativas de la memoria caché en lugar de utilizar el compilador Just-In-Time (JIT) para compilar el montaje original.
medios (para mí) que Ngen simplemente hace lo que hace el compilador JIT y guarda los resultados. No dice nada sobre la inclusión de los tiempos de ejecución de .NET en los binarios.
'NGen' solo compila el código. Que no vincula estáticamente la totalidad del marco .NET en ella.
Mono, sin embargo, hace tener un compilador estático y enlazador que puede hacer esto. Eso es, por ejemplo, cómo funciona el soporte para el iPhone de Mono.