Компиляция приложений с помощью машинного кода .NETCompiling Apps with .NET Native

.NET Native.NET Native Технология предварительной компиляции для построения и развертывания приложений Windows, входит в состав Visual Studio 2015 и более поздних версиях. is a precompilation technology for building and deploying Windows apps that is included with Visual Studio 2015 and later versions. Она автоматически компилирует окончательные версии приложений, написанных в форме управляемого кода (C# или Visual Basic) и предназначенных для .NET Framework и 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.

Как правило приложения, предназначенные для платформа.NET Framework компилируются в промежуточный язык (IL).Typically, apps that target the .NET Framework are compiled to intermediate language (IL). Во время выполнения JIT-компилятор преобразует инструкции IL в машинный код.At run time, the just-in-time (JIT) compiler translates the IL to native code. В отличие от этого .NET Native.NET Native компилирует приложения Windows непосредственно в машинный код.In contrast, .NET Native.NET Native compiles Windows apps directly to native code. Для разработчиков это означает:For developers, this means:

  • Приложения компонента производительность машинного кода.Your apps feature the performance of native code. Как правило производительность будет выше код, который сначала компилируется в IL и затем скомпилировать в машинный код с помощью JIT-компилятора.Usually, performance will be superior to code that is first compiled to IL and then compiled to native code by the JIT compiler.

  • Можно продолжить программировать в C# или Visual Basic.You can continue to program in C# or Visual Basic.

  • Можно продолжать использовать преимущества ресурсов платформы .NET Framework, включая библиотеки классов, сбор мусора, автоматическое управление памяти и обработку исключений.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.

Для пользователей приложений .NET Native.NET Native обеспечивает следующие преимущества:For users of your apps, .NET Native.NET Native offers these advantages:

  • Сократить время выполнения для большинства приложений и сценариев.Faster execution times for the majority of apps and scenarios.

  • Сократить время запуска для большинства приложений и сценариев.Faster startup times for the majority of apps and scenarios.

  • Низкая стоимость развертывания и обновления.Low deployment and update costs.

  • Оптимизированное использование памяти приложением.Optimized app memory usage.

Важно!

Для большинства приложений и сценарии машинного кода .NET предлагает значительно сократить время запуска и более высокой производительностью по сравнению с приложение компилируется IL или образ 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. Однако результаты могут различаться.However, your results may vary. Чтобы убедиться, что приложение улучшенных в результате усовершенствования для повышения производительности собственной платформы .NET, следует сравнить его производительность с не - .NET Native версии приложения.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. Дополнительные сведения см. в разделе Общие сведения о сеансе производительности.For more information, see Performance Session Overview.

Но .NET Native.NET Native не ограничивается только компиляцией в машинный код.But .NET Native.NET Native involves more than a compilation to native code. Он преобразует способ построения и выполнения приложений на платформе .NET Framework.It transforms the way that .NET Framework apps are built and executed. В частности:In particular:

  • Во время предварительной компиляции необходимые части платформы .NET Framework статически связываются с приложением.During precompilation, required portions of the .NET Framework are statically linked into your app. Это позволяет приложению работать с библиотеками локальных приложений платформы.NET Framework, а компилятору — выполнять глобальный анализ для улучшения производительности.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. В результате приложения постоянно запускаются быстрее даже после обновлений платформы .NET Framework.As a result, apps launch consistently faster even after .NET Framework updates.

  • .NET Native.NET Native Среды выполнения оптимизирована для статической предварительной компиляции и в большинстве случаев обеспечивает высокую производительность.The .NET Native.NET Native runtime is optimized for static precompilation and in the vast majority of cases offers superior performance. В то же время она сохраняет основные функции отражения, которые разработчики считают такими полезными.At the same time, it retains the core reflection features that developers find so productive.

  • .NET Native.NET Native использует то же сервер, что и компилятор C++, который оптимизирован для статических сценариев предварительной компиляции. uses the same back end as the C++ compiler, which is optimized for static precompilation scenarios.

.NET Native.NET Native способна обеспечить повышение производительности для C++ разработчиков управляемого кода, так как она использует такие же или аналогичные средства, что и C++ за кулисами, как показано в следующей таблице. 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++
БиблиотекиLibraries Платформа.NET Framework + среда выполнения WindowsThe .NET Framework + Windows Runtime Win32 + среда выполнения WindowsWin32 + Windows Runtime
КомпиляторCompiler Оптимизирующий компилятор UTCUTC optimizing compiler Оптимизирующий компилятор UTCUTC optimizing compiler
РазвернутDeployed Готов к запуску двоичных файловReady-to-run binaries Готов к запуску двоичных файлов (ASM)Ready-to-run binaries (ASM)
Среда выполненияRuntime MRT.dll (минимальной среды CLR)MRT.dll (Minimal CLR Runtime) CRT.dll (среда выполнения C)CRT.dll (C Runtime)

Для приложений, предназначенных для Windows 10, выполняется передача двоичных файлов компиляции машинного кода .NET в пакетах приложений (файлы APPX) в Магазин Windows.For Windows apps for Windows 10, you upload .NET Native Code Compilation binaries in app packages (.appx files) to the Windows Store.

В этом разделеIn This Section

Дополнительные сведения о разработке приложений при использовании компиляции машинного кода .NET см. в следующих разделахFor more information about developing apps with .NET Native Code Compilation, see these topics: