2009-02-06 19 views
11

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?¿Cómo ejecuto nGen al final de la instalación (MSI)?

Gracias!

Respuesta

1

En primer lugar, "Sí", puede garantizar que si tienen el .Net Framework instalado que 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.

0

Para mejorar el rendimiento percibido en el 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 forma 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 sobre la ejecución de acciones personalizadas en su MSI. Debería poder configurar una acción personalizada para hacer lo que quiera.

1

Este blog post debería ser útil.

Editar: Dado que no está utilizando Wix, entonces this también puede ser útil.

+0

que he visto en esta entrada del blog antes, pero no estoy utilizando WiX. – Martin

8

Puede ngen su conjunto utilizando una acción de instalación personalizada. Los siguientes enlaces explican esto con más detalle:

http://www.dotnetperls.com/ngen

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

También recuerdo una buena discusión del instalador de Paint.NET (que incluye .NET bootstrapping marco, pre-JITting etc.), pero no puedo encontrarlo en este momento. Editaré esta publicación si vuelvo a encontrarla.

+0

ambos enlaces están desaparecidos – Wouter

+1

Gracias por la información, @Wouter. Actualicé el enlace dotnetperls (deben haberse movido al enrutamiento MVC y no a las URL antiguas redirigidas). El enlace de bobpowell.net todavía parece estar bien, ¿podría volver a intentarlo? –

0

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

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

NGen: Creating Setup Projects

espero que esto le ayudará.

Cuestiones relacionadas