Можно ли использовать .NET Native без UWP?

Может ли приложение С#/.NET быть скомпилировано в собственные двоичные файлы с использованием .NET Native без приложения UWP? Например, консольное приложение 4.5? Я просмотрел более 2 часов видео в .NET Native, а также прочитал документы, но они явно не ответили на этот вопрос.

Ответ 1

Очевидно, приложения .Net Core могут быть встроены в собственный код. Вот страница, которую я нашел об этом, однако у меня пока нет опыта.

https://opensource.com/article/17/5/cross-platform-console-apps

Ответ 2

Для этого нет идеального решения, но есть несколько альтернатив:

  1. CoreRT, который поддерживает полную встроенную компиляцию из управляемых dll файлов в двоичные исполняемые файлы на целевой платформе (OS и CPU Arch), но это только ранний предварительный просмотр с отсутствием многих функций.

  2. IL2CPP, который разработан, но используется только Unity.

  3. .NET 5.0, которая, как утверждается, поддерживает встроенную компиляцию и публикацию, но еще не выпущена до ноября 2020 года.

  4. CrossGen, который является частью CoreCLR и может генерировать файлы .ni.dll, которые содержат предварительно скомпилированный (собственный код на конкретной платформе) код, а не код IL в обычной управляемой dll, что ускоряет загрузку. Но это все еще требует времени выполнения, потому что это в основном все еще управляемый dll с уже выполненной JIT-компиляцией (AOT).

Обратите внимание, что .NET Framework устареет, так как .NET Core станет унифицированным .NET, и вы можете легко узнать из новостей о поддержке встроенной компиляции, если будете продолжать следить за вещами .NET Core.