.NET8的AOT技术

AOT技术的好处:

提升启动速度;

降低发布包的大小;

内存占用小;

编译为字节码反编译难度加大; 

 

环境要求

vs2022、安装的时候勾选c++桌面开发,新版.net sdk等。

 

 项目配置

<PropertyGroup>
  <RuntimeIdentifier>win-x86;win-x64;osx-x64;linux-x64</RuntimeIdentifier> <!-- 根据需要设置 -->
  <PublishSingleFile>true</PublishSingleFile>
  <PublishTrimmed>true</PublishTrimmed> <!-- 可选,启用去除未使用的库 -->
  <PublishReadyToRun>true</PublishReadyToRun> <!-- 启用ReadyToRun -->
  <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> <!-- 包含本地依赖 -->
</PropertyGroup>

 

复制代码
常规发布命令

dotnet publish -r linux-arm64 -c Release

 

AOT发布(-p:PublishAot=true 参数)

dotnet publish -r linux-arm64 -c Release -p:PublishAot=true

然后通过以下命令发布项目,生成链接库:


dotnet publish -p:NativeLib=Shared -r win-x64 -c Release

 

指定项目

dotnet publish -p:Project=./MyProject/MyProject.csproj

指定解决方案

dotnet publish ./MySolution.sln

 
复制代码

 

体积裁剪配置

复制代码
在csproj 文件加入以下配置:

<!--AOT 相关-->

< PublishAot> true </ PublishAot>

< TrimMode> full </ TrimMode>

< RunAOTCompilation> True </ RunAOTCompilation>

< PublishTrimmed> true </ PublishTrimmed>

< TrimmerRemoveSymbols> true </ TrimmerRemoveSymbols>

< PublishReadyToRunEmitSymbols> false </ PublishReadyToRunEmitSymbols>

< DebuggerSupport> false </ DebuggerSupport>

< EnableUnsafeUTF7Encoding> true </ EnableUnsafeUTF7Encoding>

< InvariantGlobalization> true </ InvariantGlobalization>

< HttpActivityPropagationSupport> false </ HttpActivityPropagationSupport>

< MetadataUpdaterSupport> true </ MetadataUpdaterSupport>

< UseSystemResourceKeys> true </ UseSystemResourceKeys>

< IlcDisableReflection> true </ IlcDisableReflection>
复制代码

 

非aot调用aot库

aot调用aot库

 

 

 

参考:https://www.sohu.com/a/604546825_121124363

posted @   love/coder  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示