Компиляция приложений с помощью машинного кода .NET
.NET Native — это технология предварительной компиляции, предназначенная для создания и развертывания приложений UWP. .NET Native входит в состав Visual Studio 2015 и более поздних версий. Эта технология автоматически компилирует версию выпуска приложений UWP, написанных в формате управляемого кода (C# или Visual Basic), в машинный код.
Как правило, приложения .NET компилируются в промежуточный язык (IL). Во время выполнения JIT-компилятор преобразует инструкции IL в машинный код. Но .NET Native компилирует приложения UWP непосредственно в машинный код. Для разработчиков это означает:
Для приложений обеспечивается производительность на уровне машинного кода. Как правило, производительность будет значительно выше, чем если бы код сначала компилировался в промежуточный язык, а затем в машинный код 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 |
GNU C ++ | Оптимизирующий компилятор UTC | Оптимизирующий компилятор UTC |
Развернутое | Готов к запуску двоичных файлов | Готов к запуску двоичных файлов (ASM) |
Параметры выполнения | MRT.dll (минимальной среды CLR) | CRT.dll (среда выполнения C) |
Для приложений UWP в Microsoft Store передаются двоичные файлы компиляции кода .NET Native в пакетах приложений (файлы MSIX или APPX).