|
AOT介绍
.Net8的本地预编机器码AOT,它几乎进行了100%的自举。微软为了摆脱C++的钳制,做了很多努力。也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等。而需要C++做的,也就仅仅是引导程序,本篇通过代码来看下这段至关重要的引导程序的运作模式。
支持功能
SqlSugar ORM使用AOT
.NET AOT8 基本上能够免强使用了, SqlSugar ORM也支持了CRUD 能在AOT下运行了
Nuget安装
具体代码
- StaticConfig.EnableAot = true;//启用AOT 程序启动执行一次就好了
- //用SqlSugarClient每次都new,不要用单例模式
- var db = new SqlSugarClient(new ConnectionConfig()
- {
- IsAutoCloseConnection = true,
- DbType = DbType.Sqlite,
- ConnectionString = "datasource=demo.db"
- },
- it =>
- {
- // Logging SQL statements and parameters before execution
- // 在执行前记录 SQL 语句和参数
- it.Aop.OnLogExecuting = (sql, para) =>
- {
- Console.WriteLine(UtilMethods.GetNativeSql(sql, para));
- };
- });
- return db;
- 已支持功能
- //查询
- var list=db.Queryable<Student>().ToList();
- var list2=db.Queryable<Student>().ToDataTable();
- var list3= db.Queryable<Student>().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- [/code]改项目文件
- [code]<Project Sdk="Microsoft.NET.Sdk.Web">
- <PropertyGroup>
- <TargetFramework>net8.0</TargetFramework>
- <Nullable>enable</Nullable>
- <ImplicitUsings>enable</ImplicitUsings>
- <InvariantGlobalization>true</InvariantGlobalization>
- <PublishAot>true</PublishAot>
- <Platforms>AnyCPU;x64</Platforms>
- </PropertyGroup>
- <ItemGroup>
- <RdXmlFile Include="rd.xml" />
- </ItemGroup>
复制代码 RdXmlFile这个重点引用我们新建的rd.xml (这个xml要能发布出去)
如何让自已代码支持AOT
1、不能有dynamic类型 可以用object替换
2、不能有emit可以用表达式树代替换
3、一些反射找不到构造函数或者Type需要配置xml
4、反射不支持根据路径加载程序集,可以从一个类的Type中拿出来
5、发布出现c++错误,需在安装和更新VS的地方把 c++桌面 装上
6、发布要选x64 不支持x86 和arm
来源:https://www.cnblogs.com/sunkaixuan/archive/2023/11/17/17839825.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|