dotnet7 aot编译实战

2022-09-23 00:00:00 程序 项目 类型 发布 没有任何

0 起因#

这段日子看到dotnet7-rc1发布,我对NativeAot功能比较感兴趣,如果aot成功,这意味了我们的dotnet程序在防破解的上直接指数级提高。我随手使用asp.netcore-7.0模板创建了一个默认的web程序,发现aot发布出来,web服务完全使用,这是之前那些preview版本做不到的。想到fastgithub本质上也是基于asp.netcore-6.0框架的项目,于是走上fastgithub的aot改造之路。

1 改造步骤#

1.1 升级框架#

将所有项目的TargetFramework值改为7.0,fastgithub使用Directory.Build.props,所以我只需要在Directory.Build.props文件修改一个地方,所有项目生效了。

1.2 升级nuget包#

所有项目的nuget包进行升级,像有些是6.0.x版本的,如果有7.0.x-rc.x.x的更新包,就升级到新rc版本。

1.3 json序列化#

如果您的使用JsonSerializer序列化了内部未公开的类型,则需要改为JsonSerializerContext(源代码生成)方式,比如我在想序列化下面的EndPointItem类型的实例,需要如下改进:

Copy

相关文章