remarks cref c# optimization windows-installer ngen

c# - cref - ¿Cómo ejecuto nGen al final de la instalación(MSI)?



remarks c# (6)

Me gustaría ejecutar nGen al final de mi instalación simplemente para mejorar el rendimiento percibido de la primera puesta en marcha de mi aplicación. ¿Cómo podría hacer eso? ¿Hay algunas mejores prácticas? ¿Puedo estar seguro de que nGen siempre se instala con .NET Framework?

¡Gracias!


En primer lugar, "Sí", puede garantizar que si tienen instalado .Net Framework, tienen Ngen. Lo único que necesita saber es qué versión tienen instalada, porque es diferente entre 1.1 y 2.0. Lo que hice en el pasado es simplemente crear un script que mi instalador llama al final que ejecuta ngen en todos los ensamblajes.


Para mejorar el rendimiento percibido al inicio, eche un vistazo a la estática en su aplicación. Un montón de estática puede causar una cantidad significativa de sobrecarga al iniciar una aplicación.

Además, considere tener solo su formulario principal en el EXE y todo lo demás en una DLL separada. Esto no solo mejora el rendimiento sino que ayuda a garantizar que separe la vista de los datos.

Finalmente, si está configurado en NGENing, eche un vistazo a la ayuda para ejecutar acciones personalizadas en su MSI. Debería poder configurar una acción personalizada para hacer lo que quiera.



Como dice ''Micah'', , encontrará NGen instalado con .Net Framework.

Eche un vistazo a los ejemplos del instalador de WiX 3.5 cómo NGen sus ensamblajes durante la instalación.

NGen: crear proyectos de configuración

Espero que esto ayude.


Puede agregar su ensamblaje usando una acción de instalador personalizada. Los siguientes enlaces explican esto con más detalle:

http://www.dotnetperls.com/ngen

http://www.bobpowell.net/prejit.htm

También puedo recordar una buena discusión sobre el instalador de Paint.NET (que incluye el arranque de .NET Framework, pre-JITting, etc.), pero no puedo encontrarlo en este momento. Editaré esta publicación si vuelvo a encontrarla.