Native ahead-of-time compilation
Native AOT produces assemblies that are:
- Self-contained, meaning they can run on systems that do not have the .NET runtime installed.
- Ahead-of-time (AOT) compiled to native code, meaning a faster startup time and a potentially smaller memory footprint.
Native AOT compiles IL code to native code at the time of publishing, rather than at runtime using the Just In Time (JIT) compiler. But native AOT assemblies must target a specific runtime environment like Windows x64 or Linux Arm.Since native AOT happens at publish time, you should remember that while you are debugging and live working on a project in your code editor, it is still using the runtime JIT compiler, not native AOT, even if you have AOT enabled in the project! However, some features that are incompatible with native AOT will be disabled or throw exceptions, and a source analyzer is enabled to show warnings about potential code incompatibilities.
Limitations of native AOT
Native AOT has limitations...