AOT介绍
.Net8的本地预编机器码AOT,它几乎进行了100%的自举。微软为了摆脱C++的钳制,做了很多努力。也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等。而需要C++做的,也就仅仅是引导程序,本篇通过代码来看下这段至关重要的引导程序的运作模式。
支持功能
SqlSugar ORM使用AOT
.NET AOT8 基本上能够免强使用了, SqlSugar ORM也支持了CRUD 能在AOT下运行了
Nuget安装
SqlSugarCore
具体代码
StaticConfig.EnableAot = true;//启用AOT 程序启动执行一次就好了 //用SqlSugarClient每次都new,不要用单例模式 var db = new SqlSugarClient(new ConnectionConfig() { IsAutoCloseConnection = true, DbType = DbType.Sqlite, ConnectionString = "datasource=demo.db" }, it => { // Log服务器托管网ging SQL statements and parameters before execution // 在执行前记录 SQL 语句和参数 it.Aop.OnLogExecuting = (sql, para) => { Console.WriteLine(UtilMethods.GetNativeSql(sql, para)); }; }); return db; 已支持功能 //查询 var list=db.Queryable().ToList(); var list2=db.Queryable().ToDataTable(); var list3= db.Queryable().Select(it=>new { id=it.Id }).ToList(); //插入 、删除和更新只要是实体目前测试下来 都OK db.Insertable(new Student() { Id = 1, Name = "aa" }).ExecuteCommand(); db.Deleteable(new Student() { Id = 1, Name = "aa" }).ExecuteCommand(); db.Updateable(new Student() { Id = 1, Name = "aa" }).ExecuteCommand(); //写sql也支持 db.Ado.GetDataTable(sql); db.Ado.ExecuteCommand(sql);
不支功能
//部分库建表不支持 //动态建类不支持
AOT配置教程
创建一个带AOT的类项目
新建一个rd.xml
"SqlSugar" Dynamic="Required All">
改项目文件
"Microsoft.NET.Sdk.Web"> net8.0 enable enable true true AnyCPU;x64 "rd.xml" />
RdXmlFile这个重点引用我们新建的rd.xml (这个xml要能发布出去)
如何让自已代码支持AOT
1、不能有dynamic类型 可以用object替换
2、不能有emit可以用表达式树代替换
3、一些反射找不到构造函数或者Type需要配置xml
4、反射不支持根据路径加服务器托管网载程序集,可以从一个类的Type中拿出来
5、发布出现c++错误,需在安装和更新VS的地方把 c++桌面 装上
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: CAD快捷键命令大全:加载插件、图层管理器及变动快捷键
1: cad加载插件快捷键命令 cad加载插件快捷键命令 在AutoCAD(2016)中,通过快捷键命令服务器托管网”ap”可以加载插件。 加载方法: 打开CAD,输入加载插件快捷键命令”ap”,回车。 进入插件加载对话框。 选择永久性加载来一次性加载插件,不…