Optimizar las aplicaciones de escritorio de .NET con imágenes nativas

Puedes mejorar el tiempo de inicio de una aplicación de .NET Framework al precompilar los archivos binarios. Puedes usar esta tecnología en aplicaciones de gran tamaño que se empaquetan y distribuyen a través de Microsoft Store. En algunos casos, hemos observado una mejora del 20 % en el rendimiento. Puedes obtener más información sobre esta tecnología en la introducción técnica.

Hemos publicado el compilador de imágenes nativas como un paquete NuGet. Puedes aplicar este paquete a cualquier aplicación de .NET Framework cuya versión de destino sea .NET Framework versión 4.6.2 o versiones posteriores. Este paquete agrega un paso posterior a la compilación que incluye una carga nativa a todos los archivos binarios usados por la aplicación. Esta carga optimizada se cargará cuando la aplicación se ejecute en .NET 4.7.2 y versiones superiores, mientras que las versiones anteriores seguirán cargando el código MSIL.

.NET Framework 4.7.2 se incluye en la actualización de abril de 2018 de Windows 10. También puedes instalar esta versión de .NET Framework en equipos que ejecutan Windows 7+ y Windows Server 2008 R2+.

Importante

Si quieres generar imágenes nativas para la aplicación empaquetada por el proyecto de paquete de aplicación de Windows, asegúrate de establecer la actualización de aniversario de Windows como la versión mínima de la plataforma de destino del proyecto.

Cómo generar imágenes nativas

Sigue estas instrucciones para configurar tus proyectos.

  1. Configuración de la versión de .NET Framework de destino como 4.6.2 o versiones superiores

  2. Configuración de la plataforma de destino como x86 o x64

  3. Agrega los paquetes NuGet.

  4. Crea una compilación de versión.

Configuración de la versión de .NET Framework de destino como 4.6.2 o versiones superiores

Para configurar el proyecto para que tenga .NET Framework 4.6.2 como versión de destino, necesitarás las herramientas de desarrollo de .NET Framework 4.6.2 o versiones más recientes. Estas herramientas están disponibles a través del instalador de Visual Studio como componentes opcionales en la carga de trabajo de desarrollo de escritorio de .NET:

Instalación de las herramientas de desarrollo de .NET 4.6.2

Como alternativa, puedes obtener los paquetes de desarrollador de .NET desde: https://www.microsoft.com/net/download/visual-studio-sdks

Configuración de la plataforma de destino como x86 o x64

El compilador de imágenes nativas optimiza el código para una plataforma determinada. Para usarlo, debes configurar la aplicación para que tenga como destino una plataforma específica, como x86 o x64.

Si tienes varios proyectos en la solución, solo el proyecto de punto de entrada (probablemente el proyecto que genera un archivo ejecutable) se debe compilar como x86 o x64. Los archivos binarios adicionales a los que se hace referencia desde el proyecto principal se procesarán con la arquitectura especificada en el proyecto principal, incluso si se compilan como AnyCPU.

Para configurar el proyecto:

  1. Haz clic con el botón derecho en la solución y, a continuación, selecciona Configuration Manager.

  2. Seleccione Nuevo...> en el menú desplegable > junto al nombre del proyecto que genera el archivo ejecutable.

  3. En el cuadro de diálogo Nueva plataforma de proyecto, asegúrate de que la lista desplegable Copiar configuración de esté establecida en Cualquier CPU.

Configuración de x86

Repite este paso para Release/x64 si quieres generar archivos binarios x64.

Importante

El compilador de imágenes nativas no admite la configuración de AnyCPU.

Agregar los paquetes NuGet

El compilador de imágenes nativas se proporciona como un paquete NuGet que se debe agregar al proyecto de Visual Studio que genera el archivo ejecutable. Suele ser el proyecto de Windows Forms o WPF. Use este comando de PowerShell para hacerlo.

PM> Install-Package Microsoft.DotNet.Framework.NativeImageCompiler -Version 1.0.0

Crear una compilación de versión

El paquete NuGet configura el proyecto para ejecutar una herramienta adicional para las compilaciones de versión. Esta herramienta agrega el código nativo a los mismos archivos binarios. Para comprobar que la herramienta ha procesado los archivos binarios, puedes revisar los resultados de la compilación para asegurarte de que incluye un mensaje como este:

Native image obj\x86\Release\\R2R\DesktopApp1.exe generated successfully.

La compilación de imágenes nativas puede desencadenarse en compilaciones que no son de versión al establecer la propiedad NgenR2R en true en el archivo de proyecto.

Preguntas más frecuentes

P. ¿Los nuevos archivos binarios funcionan en máquinas sin .NET Framework 4.7.2?

A. Los archivos binarios optimizados se beneficiarán de las mejoras que se obtienen al ejecutarse con .NET Framework 4.7.2. Los clientes que ejecutan versiones anteriores de .NET Framework cargarán el código MSIL no optimizado desde el archivo binario.

Q. ¿Cómo puedo enviar comentarios o notificar problemas?

A. Notifica un problema mediante la herramienta de comentarios de Visual Studio 2017. Más información.

Q. ¿Cuál es el impacto de agregar la imagen nativa a los archivos binarios existentes?

A. Los archivos binarios optimizados contienen el código administrado y nativo, lo que aumenta el tamaño de los archivos finales.

Q. ¿Puedo liberar archivos binarios con esta tecnología?

A. Esta versión incluye una licencia Go Live que puedes usar hoy mismo.