首页 > 其他分享 >.NET8的AOT技术

.NET8的AOT技术

时间:2024-07-24 13:41:14浏览次数:17  
标签:技术 publish x64 aot AOT NET8 dotnet true

AOT技术的好处:

提升启动速度;

降低发布包的大小;

内存占用小;

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

 项目配置

<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

标签:技术,publish,x64,aot,AOT,NET8,dotnet,true
From: https://www.cnblogs.com/thingk/p/18267924

相关文章

  • 微软正式推出适用于WSL Linux的D3D12 GPU视频加速技术
    今天,微软正式向WindowsSubsystemforLinux(WSL)用户发布了Direct3D12GPU视频加速支持。在微软通过WSL允许在Linux下使用OpenGL、OpenCL和VulkanAPI进行GPU加速的工程工作之后,他们现在已经准备好提供官方视频加速支持。这项工作是在Mesa中建立起来的,......
  • Samtec技术科普小课堂 | 一文入门射频连接器~
    【摘要/前言】在本文中,我们将回到基础知识,了解一下什么是射频连接器。如果您是信号完整性专家,请点击阅读原文访问我们的网站视频,通过我们的网络研讨会视频了解教科书上可能找不到的知识。如果您是电气工程领域的新手,或者只是需要更好地了解这种产品类型,请继续阅读,本文将通......
  • 未来飞行:融合生物工程与控制技术的鸟类飞行器设计
    未来飞行:融合生物工程与控制技术的鸟类飞行器设计引言在现代科技的推动下,我们正迈向一个将生物学与工程学深度融合的未来。本文提出了一种创新的设计概念:一种具有乘客舱和操控功能的鸟类飞行器,通过结合先进的生物工程与控制技术,实现了从胚胎发育阶段到成鸟阶段的自然集成。这种......
  • 对于数字技术资源的选择,要遵循哪几个原则?()
    对于数字技术资源的选择,要遵循哪几个原则?()查看试题答案内容A.减负增效原则B.易学易用原则C.多渠道检索原则D.功能丰富原则对于教学素材类资源的获取,我们不仅可以使用垂直搜索的策略,还可以通过拓展资源的搜索渠道来获取更多样的资源,比如微信,抖音,小红书等等。()A.正确 ......
  • 图像透视变换技术
    文章目录概要技术原理实现步骤总结透视变换矩阵的通用性小结概要图像透视变换(PerspectiveTransformation)是计算机视觉中一种重要的图像变换方法,它可以将图像从一个视角投影到另一个视角,从而改变图像的几何形状。透视变换常用于矫正图像的透视失真、图像配准、生成......
  • SpringBoot整合SSE技术详解
    SpringBoot整合SSE技术详解1.引言在现代Web应用中,实时通信变得越来越重要。Server-SentEvents(SSE)是一种允许服务器向客户端推送数据的技术,为实现实时更新提供了一种简单而有效的方法。本文将详细介绍如何在SpringBoot中整合SSE,并探讨SSE与WebSocket的区别。2.SS......
  • Java并发编程的高级技术与最佳实践
    Java并发编程的高级技术与最佳实践大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java并发编程的高级技术与最佳实践。并发编程是Java开发中的一项重要技能,它能够充分利用多核处理器的优势,提高应用程序的性能和响应能力。本文将从高级......
  • 探索Java虚拟机优化技术:从基础到高级
    探索Java虚拟机优化技术:从基础到高级大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java虚拟机(JVM)的优化技术,从基础到高级,为Java程序的高效运行提供全面指导。一、JVM概述Java虚拟机是Java程序的运行环境,负责加载字节码、执行代码、......
  • 智能座舱背后的情感贯穿(情绪识别/表情识别)技术是什么?
    智能座舱背后的情感贯穿(情绪识别/表情识别)技术是什么?随着汽车智能化的发展,智能座舱逐渐成为汽车科技的核心组成部分。情感贯穿技术是智能座舱中的重要元素,旨在通过监测和识别驾驶员及乘客的情绪状态,提供更加智能化和人性化的驾驶体验。本文将详细介绍智能座舱中的情感贯穿......
  • 如何提高LoRa抗干扰能力来提升通信质量的几种技术分享
    LoRa(Long Range)技术凭借其远距离传输、低功耗和高抗干扰能力,在物联网(IoT)领域得到了广泛应用。LoRa技术强大的抗干扰能力不仅提高了信号的稳定性和通信距离,还提升了数据的可靠性。然而,面对复杂的无线环境,进一步提高LoRa的抗干扰能力对于确保数据可靠传输至关重要。本篇技术文章将......