新版.NET中的AOT(Ahead-of-Time)技术已愈发成熟,AOT是指在程序运行之前就把代码编译成目标平台的原生机器码,而不依赖运行时的JIT(Just-in-Time)编译器,这能带来更小的发布体积、更快的启动速度、更小的内存占用和更高的安全性。AOT编译后的程序自带核心运行时(相比自包含方式小的多)。但是AOT技术具有一定限制:不支持反射、动态IL代码、动态加载程序集等语言特性。当前.NET生态中有大量三方库的实现都基于以上语法特性,这就导致很多三方库不支持AOT编译。
AOT技术的使用场景受限,对于不支持AOT的项目(例如.NET下的WPF应用),在发布时可以选择自包含运行时,那么程序在没有安装运行时的环境中依然能够运行,这种方式也是非常便捷的,唯一不足在于程序发布体积过大(自带完整运行时,体积达到100MB)。
下面简要介绍下如何使用AOT和发布功能。
