SuperAPI AI 工具集

dotnet-aot-architecture

通用与其它

查看项目

更新于 10-16 01:27

技能介绍

用途:介绍 .NET 8.0+ 的 AOT 优先应用设计模式,适用于控制台、ASP.NET Core Minimal API、worker service 等可 AOT 项目类型。

主要能力:

  1. 以源生成器替代反射,例如用 [JsonSerializable] 上下文、[GeneratedRegex]、[LoggerMessage]、[LibraryImport]、[Mapper] 替换 JsonSerializer 反射、Regex 编译、字符串插值日志、DllImport 与 AutoMapper。
  2. AOT 安全 DI:使用显式 Add*() 注册、扩展方法分组注册、.NET 8+ keyed services;避免程序集扫描与开放泛型解析。
  3. 序列化选型:System.Text.Json 源生成、Google.Protobuf、MessagePack+源生成器为 AOT 安全;Newtonsoft.Json 与未配源生成的 STJ 不安全。
  4. 用工厂模式、DI keyed services 或 switch 表达式替代 Activator.CreateInstance。
  5. 库兼容性评估清单:检查 IsAotCompatible、[RequiresDynamicCode]/[RequiresUnreferencedCode] 标注,并以命令检测:dotnet build /p:EnableAotAnalyzer=true /p:EnableTrimAnalyzer=true /p:TrimmerSingleWarn=false;IL3050 表示必然破坏,IL2026 表示可能破坏。文中给出 AutoMapper、MediatR、FluentValidation、Dapper、EF Core、Refit、Polly、Serilog、Hangfire 的兼容状态与替代方案。

限制:不涉及 Native AOT 发布管线与 MSBuild 配置、trim 标注与库编写、WASM AOT、MAUI AOT、Roslyn 源生成器编写与 DI 容器内部机制。不假设库可 AOT 兼容,需实测;避免 Type.GetType()/Assembly.GetTypes() 运行时发现。