.NET 5 中的隐藏特性
转自:hez2010 cnblogs.com/hez2010/p/13963803.html 前言 双十一当天,个人觉得非常香,并且花了 10 分钟时间就把自己的 4 个 .NET Core 3.1 的项目升级到了 .NET 5,堪称无痛。 但是,.NET 5 中还有一些没有正式公开的隐藏特性,那么现在就开始介绍吧。 Crossgen 2 Crossgen 其实就是众所周知的 ReadyToRun 特性。该功能将你的程序集进行一定程度的 AOT 编译,然后在运行时跟踪热路径对一些方法进行带有更多优化的 JIT 编译,即分层编译,这使得程序集的加载速度大幅提高。 但是 .NET 5 其实带了 Crossgen 的下一个版本:Crossgen 2。 Crossgen 2 的代码几乎是从 CoreRT 继承而来,并在此基础上做了很大改进。CoreRT 可以对 .NET 程序集进行完全的原生优化编译,编译出来的东西就是完全 native 的,和 Go 的体验完全一致。 Crossgen 2 则使用了这套方法,将你的程序集在支持范围之内进行 Native AOT 编译,然后运行时直接加载启动,并根据运行情况再使用 JIT 编译器进行进一步的优化,是一种混合 AOT 策略。 为什么说在支持范围之内呢?因为 Native AOT 必然对动态加载和 Emit 等特性不友好,但是 Crossgen