Optimizar las aplicaciones de escritorio de .NET con imágenes nativasOptimize your .NET desktop apps with native images

Puedes mejorar el tiempo de inicio de una aplicación de .NET Framework al precompilar los archivos binarios.You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Puedes usar esta tecnología en aplicaciones de gran tamaño que se empaquetan y distribuyen a través de Microsoft Store.You can use this technology on large applications that you package and distribute through the Microsoft Store. En algunos casos, hemos observado una mejora del 20 % en el rendimiento.In some cases, we've observed a 20% performance improvement. Puedes obtener más información sobre esta tecnología en la introducción técnica.You can learn more about this technology in the technical overview.

Hemos publicado el compilador de imágenes nativas como un paquete NuGet.We've released the native image compiler as a NuGet package. 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.You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. 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.This package adds a post build step that includes a native payload to all the binaries used by your application. 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.This optimized payload will be loaded when the application runs in .NET 4.7.2 and above while previous versions will still load the MSIL code.

.NET Framework 4.7.2 se incluye en la actualización de abril de 2018 de Windows 10.The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. También puedes instalar esta versión de .NET Framework en equipos que ejecutan Windows 7+ y Windows Server 2008 R2+.You can also install this version of the .NET Framework on PCs that run Windows 7+ and 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.If you want to produce native images for your application packaged by the Windows Application Packaging project, make sure to set the Target Platform Minimum version of the project to the Windows Anniversary Update.

Cómo generar imágenes nativasHow to produce native images

Sigue estas instrucciones para configurar tus proyectos.Follow these instructions to configure your projects.

  1. Configuración de la versión de .NET Framework de destino como 4.6.2 o versiones superioresConfigure the target framework as 4.6.2 or above

  2. Configuración de la plataforma de destino como x86 o x64Configure the target platform as x86 or x64

  3. Agrega los paquetes NuGet.Add the NuGet packages.

  4. Crea una compilación de versión.Create a Release Build.

Configuración de la versión de .NET Framework de destino como 4.6.2 o versiones superioresConfigure the target framework as 4.6.2 or above

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.To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. 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:These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

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-sdksAlternatively, you can get the .NET developer packs from: https://www.microsoft.com/net/download/visual-studio-sdks

Configuración de la plataforma de destino como x86 o x64Configure the target platform as x86 or x64

El compilador de imágenes nativas optimiza el código para una plataforma determinada.The native image compiler optimizes the code for a given platform. Para usarlo, debes configurar la aplicación para que tenga como destino una plataforma específica, como x86 o x64.To use it, you need to configure your application to target one specific platform such as x86 or 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.If you have multiple projects in your solution, only the entry point project (most likely the project that produces an executable file) has to be compiled as x86 or 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.Additional binaries referenced from the main project will be processed with the architecture specified in the main project, even if they are compiled as AnyCPU.

Para configurar el proyecto:To configure your project:

  1. Haz clic con el botón derecho en la solución y, a continuación, selecciona Configuration Manager.Right-click your solution, and then select Configuration Manager.

  2. Selecciona <Nuevo...> en el menú desplegable de Plataforma junto al nombre del proyecto que genera el archivo ejecutable.Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  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.In the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

Configuración de x86

Repite este paso para Release/x64 si quieres generar archivos binarios x64.Repeat this step for Release/x64 if you want produce x64 binaries.

Importante

El compilador de imágenes nativas no admite la configuración de AnyCPU.AnyCPU configuration is not supported by the native image compiler.

Agregar los paquetes NuGetAdd the NuGet packages

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.The native image compiler is provided as a NuGet package that you need to add to the Visual Studio project that produces the executable file. Suele ser el proyecto de Windows Forms o WPF.This is typically your Windows Forms or WPF project. Use este comando de PowerShell para hacerlo.Use this PowerShell command to do that.

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

Crear una compilación de versiónCreate a Release Build

El paquete NuGet configura el proyecto para ejecutar una herramienta adicional para las compilaciones de versión.The NuGet package configures the project to run an additional tool for release builds. Esta herramienta agrega el código nativo a los mismos archivos binarios.This tool adds the native code to the same binaries. 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:To verify that the tool has processed the binaries you can review the build output to make sure it includes a message such as this one:

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.Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.

Preguntas más frecuentesFAQ

P. ¿Los nuevos archivos binarios funcionan en máquinas sin .NET Framework 4.7.2?Q. Do the new binaries work on machines without .NET Framework 4.7.2?

A.A. Los archivos binarios optimizados se beneficiarán de las mejoras que se obtienen al ejecutarse con .NET Framework 4.7.2.Optimized binaries will benefit from the improvements when running with .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.Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

P. ¿Cómo puedo enviar comentarios o notificar problemas?Q. How can I provide feedback or report issues?

A.A. Notifica un problema mediante la herramienta de comentarios de Visual Studio 2017.Report an issue by using the Feedback tool in Visual Studio 2017. Información adicional.More information.

P. ¿Cuál es el impacto de agregar la imagen nativa a los archivos binarios existentes?Q. What’s the impact of adding the native image to existing binaries?

A.A. Los archivos binarios optimizados contienen el código administrado y nativo, lo que aumenta el tamaño de los archivos finales.The optimized binaries contain the managed and native code, making the final files greater.

P. ¿Puedo liberar archivos binarios con esta tecnología?Q. Can I release binaries using this technology?

A.A. Esta versión incluye una licencia Go Live que puedes usar hoy mismo.This version includes a Go Live license that you can use today.