.NET 中備受追捧和期待已久的功能NativeAOT終於出現在本周的.NET 7 預覽版2中,該項目的工作仍在繼續,該版本將 NativeAOT 從實驗性的 dotnet/runtimelab repo 中移出合並進入穩定的運行時庫 dotnet/runtime repo,但尚未在 dotnet SDK 中添加足夠的支持,以使用 NativeAOT 發布項目。完成此操作后,可以對實際測試進行完善了。
.NET NativeAOT 編譯器脫離實驗性質正式跟隨 .NET 7 Preview 2 發布到了官方 nuget 源:https://www.nuget.org/packages/Microsoft.DotNet.ILCompiler 。
從現在開始,7.0.0-* 版本基本可以放心用在生產環境。我們可用開始嘗試修剪我們的應用程序,並確保沒有剪裁警告。剪裁是 NativeAOT 的要求。GitHub 問題 .NET 7 中的 NativeAOT #61231 顯示了正在檢查的初始工作以及第一階段的剩余工作:
NativeAOT 這個功能的完整支持真是不容易,具體怎么用可用參考 hez2010的文章:通過 .NET NativeAOT 實現用戶體驗升級。
這里來回顧一下這個歷程:具體內容來自知乎的hez2010 的整理的內容 https://www.zhihu.com/question/472875939 :
Native AOT (2021.1~2021.7)的進展:
2021/8/12 更新:
- 正在添加對 ARMv7 平台的支持(已有 PR)
- 正在添加對接口泛型方法默認實現的支持(已有 PR)
2021/8/14 更新:
- 接口泛型方法默認實現已支持,因此 efcore 可以用 NativeAOT 了
- 泛型虛擬方法解析速度有所提升(大概 8%),編譯時間更短了
2021/8/17 更新:
- NativeAOT 在 .NET 6 上計划的內容已經完成,已經可以穩定使用,另外可能會在 .NET 7 脫離實驗正式發布
- ARMv7 平台支持已接近完成

2021/8/24 更新:
- NativeAOT 編譯器版本已提升至 7.0.0-*
2021/9/6 更新:
- 正在適配安卓
- LLVM 從 6 升級到 12
- 完善
IDynamicInterfaceCastable
支持,對 COM 的支持度進一步改善
2021/9/17 更新:
- 支持了模塊初始化器
- 正在添加對 x86 的支持
2021/12/6 更新:
- Native AOT 轉正正式提上 .NET 7 計划
2021/12/15 更新:
- Native AOT 代碼正式合並入 .NET 主線並啟用了構建
- 無限泛型展開導致無法編譯的問題已經解決
2022/3/17 更新:
1. 正式在.NET 7 Preview 2博客文章中宣布可用。
2. WPF 開始了 AOT 改造: https://github.com/dotnet/wpf/pull/6171