美文网首页
初探.NET8 NativeAOT(一)

初探.NET8 NativeAOT(一)

作者: ChenReal | 来源:发表于2023-11-25 11:34 被阅读0次

一、前言

不久前.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化。敬请关注吧。

相关文章

网友评论

      本文标题:初探.NET8 NativeAOT(一)

      本文链接:https://www.haomeiwen.com/subject/cclowdtx.html