Compilar aplicaciones con .NET NativeCompiling Apps with .NET Native

.NET Native es una tecnología de precompilación para compilar e implementar aplicaciones de Windows que se incluyen con Visual Studio 2015 y versiones posteriores..NET Native is a precompilation technology for building and deploying Windows apps that is included with Visual Studio 2015 and later versions. Su función es compilar automáticamente, a código nativo, aquellas versiones de lanzamiento de las aplicaciones escritas en código administrado (C# o Visual Basic) y que tienen como destino .NET Framework y Windows 10.It automatically compiles the release version of apps that are written in managed code (C# or Visual Basic) and that target the .NET Framework and Windows 10 to native code.

Normalmente, las aplicaciones que tienen como destino .NET Framework se compilan en lenguaje intermedio (IL).Typically, apps that target the .NET Framework are compiled to intermediate language (IL). En tiempo de ejecución, el compilador Just-In-Time (JIT) convierte el IL en código nativo.At run time, the just-in-time (JIT) compiler translates the IL to native code. En cambio, .NET Native compila aplicaciones de Windows directamente en código nativo.In contrast, .NET Native compiles Windows apps directly to native code. Para los desarrolladores, esto significa:For developers, this means:

  • Las aplicaciones incluyen el rendimiento del código nativo.Your apps feature the performance of native code. Normalmente, el rendimiento será superior al código que se compila primero en IL y que, a continuación, se compila en código nativo mediante el compilador JIT.Usually, performance will be superior to code that is first compiled to IL and then compiled to native code by the JIT compiler.

  • Puede seguir programando en C# o Visual Basic.You can continue to program in C# or Visual Basic.

  • Puede continuar beneficiándose de los recursos proporcionados por .NET Framework, incluida su biblioteca de clases, la administración automática de memoria, la recolección de elementos no utilizados y el control de excepciones.You can continue to take advantage of the resources provided by the .NET Framework, including its class library, automatic memory management and garbage collection, and exception handling.

En el caso de los usuarios de las aplicaciones, .NET Native ofrece estas ventajas:For users of your apps, .NET Native offers these advantages:

  • Tiempos de ejecución más rápidos para la mayoría de las aplicaciones y los escenarios.Faster execution times for the majority of apps and scenarios.

  • Tiempos de inicio más rápidos para la mayoría de las aplicaciones y los escenarios.Faster startup times for the majority of apps and scenarios.

  • Pocos costos de implementación y actualización.Low deployment and update costs.

  • Uso optimizado de la memoria de la aplicación.Optimized app memory usage.

Importante

En la gran mayoría de las aplicaciones y los escenarios, .NET Native ofrece tiempos de inicio significativamente más rápidos y un rendimiento superior en comparación con una aplicación compilada en IL o en una imagen de NGEN.For the vast majority of apps and scenarios, .NET Native offers significantly faster startup times and superior performance when compared to an app compiled to IL or to an NGEN image. Sin embargo, los resultados pueden variar.However, your results may vary. Para asegurarse de que la aplicación se ha beneficiado de las mejoras de rendimiento de .NET Native, debe comparar su rendimiento con el de la versión nativa de non-.NET de la aplicación.To ensure that your app has benefited from the performance enhancements of .NET Native, you should compare its performance with that of the non-.NET Native version of your app. Para obtener más información, vea información general sobre la sesión de rendimiento.For more information, see Performance Session Overview.

Pero .NET Native implica más que una compilación en código nativo.But .NET Native involves more than a compilation to native code. Transforma la manera en que se compilan y ejecutan las aplicaciones de .NET Framework.It transforms the way that .NET Framework apps are built and executed. En concreto:In particular:

  • Durante la precompilación, las partes necesarias de .NET Framework se vinculan estáticamente en la aplicación.During precompilation, required portions of the .NET Framework are statically linked into your app. Esto permite que la aplicación se ejecute con bibliotecas locales de aplicación de .NET Framework y que el compilador realice un análisis global para ofrecer un gran rendimiento.This allows the app to run with app-local libraries of the .NET Framework, and the compiler to perform global analysis to deliver performance wins. Como resultado, las aplicaciones se inician sistemáticamente más rápido después de las actualizaciones de.NET Framework.As a result, apps launch consistently faster even after .NET Framework updates.

  • El tiempo de ejecución de .NET Native está optimizado para la precompilación estática y, en la mayoría de los casos, ofrece un rendimiento superior.The .NET Native runtime is optimized for static precompilation and in the vast majority of cases offers superior performance. Al mismo tiempo, conserva las características de reflexión principales que los desarrolladores encuentran tan productivas.At the same time, it retains the core reflection features that developers find so productive.

  • .NET Native usa el mismo back-end que C++ el compilador, que está optimizado para escenarios de precompilación estáticos..NET Native uses the same back end as the C++ compiler, which is optimized for static precompilation scenarios.

.NET Native es capaz de aportar las ventajas de rendimiento C++ de a los desarrolladores de código administrado, ya que utiliza las mismas C++ herramientas o similares que se muestran en esta tabla..NET Native is able to bring the performance benefits of C++ to managed code developers because it uses the same or similar tools as C++ under the hood, as shown in this table.

.NET Native.NET Native C++C++
BibliotecasLibraries .NET Framework + Windows en tiempo de ejecuciónThe .NET Framework + Windows Runtime Win32 + Windows en tiempo de ejecuciónWin32 + Windows Runtime
CompiladorCompiler Compilador de optimización de UTCUTC optimizing compiler Compilador de optimización de UTCUTC optimizing compiler
ImplementadoDeployed Archivos binarios listos para ejecutarseReady-to-run binaries Archivos binarios listos para ejecutarse (ASM)Ready-to-run binaries (ASM)
Tiempo de ejecuciónRuntime MRT.dll (tiempo de ejecución de CLR mínimo)MRT.dll (Minimal CLR Runtime) CRT.dll (tiempo de ejecución de C)CRT.dll (C Runtime)

Para aplicaciones de Windows 10, cargue los archivos binarios de compilación de código con .NET Native en paquetes de aplicación (archivos .appx) en la Tienda Windows.For Windows apps for Windows 10, you upload .NET Native Code Compilation binaries in app packages (.appx files) to the Windows Store.

En esta secciónIn This Section

Para obtener más información sobre el desarrollo de aplicaciones con la compilación de código con .NET Native, vea estos temas:For more information about developing apps with .NET Native Code Compilation, see these topics: