一、前言
不久前.NET8正式登场,据说有1000多项的优化,被誉为史上最快的.NET。(废话如果是最慢还敢拿出来献丑,早就被喷子们喷回姥姥家了。)
其中,NativeAOT作为备受关注的功能,自然也备受了我的关注。半年前我在博客文章《浅尝.NET7 NativeAOT》中,立下了一个灰太狼式的Flag:我还会回来的!等.NET8出道的那天。
于是,今天兑现我的诺言,卷.NET8再来!
二、实践
我决定还是由浅入深,第一波实践还是从最最最简单的“Hello World”开始。大家没意见吧?(有意见我也听不到,哈哈)
1、Windows环境
打开最新版的Visual Studio,创建一个Console项目。发现向导窗口多了一个AOT的选项,M$做的很贴心,只需要在这里钩上就可以自动在工程文件上增加AOT的配置。
VS选项
接着,发布打包应用,其指令跟.NET7一模一样:
dotnet publish DemoAot.csproj -o pub\ -c Release -r win-x64
打包出来的执行文件大约1.2M,记得.NET7的时候是2.5M。正好少了一半,与官方宣传的吻合,没有虚标。
2、Linux环境
因为Debian11环境下没有Visual Studio的加持,所以只能用命令行创建一个项目来做测试了。
- 下载安装
https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-8.0.100-linux-x64-binaries
#解压安装
tar zxf dotnet-sdk-8.0.100-linux-x64.tar.gz -C /usr/local/share/dotnet
#看看SDK是否安装成功
dotnet --list-sdks
- 创建项目
dotnet new console
- 修改工程文件
修改*.csproj文件,加上<PublishAot>true</PublishAot>
。虽然这一步没法再IDE的帮助下省掉,但是好在也不太费事。
-打包发布
发布打包应用的指令也没变一样:
dotnet publish DemoAot.csproj -o $PWD/pub -c Release -r linux-x64
打包出来的执行文件大约1.5M,.NET7的时候是3.77M。Wow,更上一头牛了!
3、MacOS环境
现在MacOS如同被抛弃的孩子一样,跟只能像Linux一样的操作了。
- 下载安装.net8 sdk
https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-8.0.100-macos-x64-binaries
#解压安装
tar zxf dotnet-sdk-8.0.100-osx-x64.tar.gz -C /usr/local/share/dotnet
#看看SDK是否安装成功
dotnet --list-sdks
注意,以上安装过程。是操作系统已经有.NET6或.NET7的SDK为前提的,如果没有那么请参考官方文档。抄我的未必行。
- 命令行创建项目
dotnet new console
修改工程文件,增加PublishAot
,完了执行脚本打包:
dotnet publish DemoAot.csproj -o $PWD/pub -c Release -r osx-x64
打包出来的执行文件大约1.69M,.NET7的时候是8M。优秀!
总结
- 1、通过简单的“Hello World”控制台应用发布生成NativeAOT应用的实践,在MacOS、Linux、Windows环境中均告成功;
- 2、编译打包速度与.NET7相比应该算事不相上下吧;
- 3、生成的可执行文件都很小1.2M-1.7M之间,比起.NET7小了一大截;
- 4、执行效率没有测试,因为执行逻辑太简单比较起来没有太大意义。
预告
“Hello World”测试大获成功,接下来我准备找一个代码量较大的现役工具应用,来一波NativeAOT化。敬请关注吧。
网友评论