Поделиться через


Компиляция приложений с помощью .NET Native

.NET Native — это технология предварительной компиляции для создания и развертывания приложений UWP. .NET Native входит в состав Visual Studio 2015 и более поздних версий. Он автоматически компилирует релизную версию приложений UWP, написанных на управляемом коде (C# или Visual Basic), в машинный код.

Как правило, приложения .NET компилируются на промежуточный язык (IL). Во время выполнения компилятор JIT преобразует IL в машинный код. В отличие от этого, .NET Native компилирует приложения UWP непосредственно в машинный код. Для разработчиков это означает:

  • Ваши приложения характеризуются производительностью родного кода. Как правило, производительность будет выше кода, который сначала компилируется в IL, а затем компилируется в машинный код компилятором JIT.

  • Вы можете продолжить программу в C# или Visual Basic.

  • Вы можете продолжать использовать преимущества ресурсов, предоставляемых .NET Framework, включая ее библиотеку классов, автоматическое управление памятью и сборку мусора и обработку исключений.

Для пользователей приложений .NET Native предлагает следующие преимущества:

  • Ускорить выполнение большинства приложений и сценариев.

  • Быстрое время запуска для большинства приложений и сценариев.

  • Низкие затраты на развертывание и обновление.

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

Но .NET Native предполагает нечто большее, чем компиляцию в машинный код. Он преобразует способ создания и выполнения приложений .NET Framework. В частности:

  • Во время предварительной компиляции необходимые части .NET Framework статически связаны с приложением. Это позволяет приложению работать с локальными библиотеками .NET Framework, а компилятору выполнять глобальный анализ для достижения повышения производительности. В результате приложения запускаются постоянно быстрее даже после обновлений .NET Framework.

  • Среда выполнения .NET Native оптимизирована для статической предварительной компиляции и в большинстве случаев обеспечивает более высокую производительность. В то же время он сохраняет основные функции отражения, которые разработчики находят столь продуктивными.

  • В .NET Native используется та же серверная часть, что и компилятор C++, оптимизированный для сценариев статической предварительной компиляции.

.NET Native может повысить производительность C++ для разработчиков управляемого кода, так как он использует те же или аналогичные инструменты, что и C++ под капюшоном, как показано в этой таблице.

Компонент .NET Native C++
Библиотеки .NET Framework + среда выполнения Windows Win32 + среда выполнения Windows
Компилятор Компилятор оптимизации UTC Компилятор оптимизации UTC
Развернуто Готовые к использованию бинарники Готовые к выполнению бинарные файлы (ASM)
Режим выполнения MRT.dll (минимальная среда выполнения CLR) CRT.dll (среда выполнения C)

Для приложений UWP вы отправляете двоичные файлы компиляции нативного кода .NET в пакеты приложений (файлы .msix или .appx) в Microsoft Store.