当前位置: 首页 > article >正文

.NET 8.0 AOT 教程 和使用 和 .NET ORM 操作

NET AOT编译是一种.NET运行时的编译方式,它与传统的JIT编译方式不同。在传统的JIT编译中,.NET应用程序的代码在运行时才会被编译成本地机器码,而在AOT编译中,代码在运行之前就被提前编译成本地机器码。这样可以在代码运行的时候不用再编译,让应用启动更快;AOT编译后的代码是二进制,这样的话提高了反编译代码的难度,让应用更安全;它可以减少编译后的文件大小从而节省IO空间;并可以减少内存的使用。由于AOT编译是发生的运行之前,所以不能编译动态生成代码,比如反射等代码。

.NET 8使用AOT

http://ASP.NET Core 8.0 正式引入了对 .NET 本机AOT的支持。让http://ASP.NET Core能直接使用AOT发布程序。当然.NET 7也支持AOT,不过使用麻烦些。下面小编介绍如何使用。

1、先决条件

要在.NET 8中使用AOT当然首先安装.NET 8的SDK,由于正式版要到11月份才发布,可以使用它的第一个候选版本(rc1),下载地址如下:

http://dotnet.microsoft.com/zh-cn/download/dotnet/8.0

另外需要下载安装Visual Studio 2022 预览版,并在安装时选择“http://ASP.NET 和 Web 开发”和“使用 C++ 的桌面开发”,如下图:

vs2022预览版下载地址:

http://visualstudio.microsoft.com/zh-hans/vs/preview/

2、项目准备

创建一个http://ASP.NET Core Web API项目,注意的是必须选择带AOT标识的项目。如下图:

创建后的项目:

项目多了个http文件,具体在哪里添加API接口还需要研究一下。

当然也可以使用.NET Core CLI命令来创建项目。命令如下:

dotnetnewwebapiaot-oAOTtest&&cdAOTtest

3、发布项目

Visual Studio 不支持发布 AOT 应用,所以使用.NET Core CLI命令"dotnet publish"来发布。发布成功的窗口如下:

接下来可以打开发布的release目录来运行。

直接双击exe文件就可以运行,并且可以在未安装.NET8的环境下运行。成功运行效果如下:

其实.NET 8之前的版本也支持AOT,某些大佬实现过。

支持 AOT  ORM

测试项目发布耗时发布后 .exe 体积发布后 .pdb 体积通过AOT

SqlSugar v5.1.4.117 + Sqlite 

用的纯净版

50.002 25,133KB180,412KB通过
EFCore v8.0 + Sqlite50.74917,410KB168,788KB未通过
DapperAOT49.74916,410KB17,410KB通过

SqlSugar ORM

 开源多库架构ORM框架(EF Core单库架构),由果糖大数据科技团队

维护和更新 ,开箱即用最易上手的.NET ORM框架 。生态圈丰富,目前开源生态仅次于EF Core,但是在需要多库兼容的项目或产品中更加偏爱SqlSugar 

  SqlSugar AOT详细教程   AOT 支持 .NET ORM - SqlSugar 5x - .NET果糖网


http://www.kler.cn/a/136025.html

相关文章:

  • CTF学习24.12.21[隐写术进阶]
  • 13.罗意文面试
  • uniapp Native.js 调用安卓arr原生service
  • UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏
  • 猫咪睡眠:萌态背后的奥秘与启示
  • 【LeetCode】45.跳跃游戏II
  • Oracle 11g 多数据库环境下的TDE设置
  • 使用键盘管理器更改键盘快捷键,让键盘真正迎合你的使用习惯
  • 【NGINX--2】高性能负载均衡
  • Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)
  • 前端本地存储数据库IndexedDB
  • 计算机是如何工作的(简单介绍)
  • 机器学习二元分类 二元交叉熵 二元分类例子
  • 分布式与微服务 —— 初始
  • 二进制部署k8s集群-过程中的问题总结(接上篇的部署)
  • 简单工程模式
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv5s的道路目标检测
  • Debian系列的Linux发行版上部署wvp
  • C语言--每日五道选择题--Day20
  • el-table 对循环产生的空白列赋默认值
  • 论文笔记:The Impact of AI on Developer Productivity:Evidence from GitHub Copilot
  • 怎么在echarts图上左右滑动切换数据区间
  • Flutter在web项目中使用iframe
  • html主页框架,前端首页通用架构,layui主页架构框架,首页框架模板
  • 设计原则 | 开放封闭原则
  • LeetCode【92】翻转链表II