用途:为 .NET 8+ 提供 AOT 优先(AOT-first)的应用设计模式,帮助在原生 AOT 场景下避免运行时反射。适用于所有支持 AOT 的项目类型,如控制台、ASP.NET Core Minimal APIs、worker 服务。
主要能力:
- 用编译期源生成器替代反射,例如 [JsonSerializable] 上下文、[GeneratedRegex]、[LoggerMessage]、[LibraryImport]、Mapperly 的 [Mapper]。
- AOT 安全 DI:显式 services.Add*() 注册、按关注点分组的扩展方法、.NET 8+ 键控服务(AddKeyedSingleton / [FromKeyedServices]),避免程序集扫描。
- 序列化选择:System.Text.Json + 源生成、Protobuf、MessagePack + 源生成解析器;Newtonsoft.Json 与无源生成的 STJ 不适用于 AOT。
- 工厂模式替代 Activator.CreateInstance:显式注册工厂、键控服务策略、枚举 switch 表达式。
- 库兼容性评估:检查 IsAotCompatible、[RequiresDynamicCode]/[RequiresUnreferencedCode] 注解,运行 AOT 分析器。
- 提供 AOT 应用架构模板目录结构。
使用方式:在项目中启用 AOT 分析器构建,例如 dotnet build /p:EnableAotAnalyzer=true /p:EnableTrimAnalyzer=true /p:TrimmerSingleWarn=false,关注 IL3050(RequiresDynamicCode,必然破坏)与 IL2026(RequiresUnreferencedCode,可能破坏)警告。
适用场景:需要原生 AOT 发布、裁剪友好、低反射依赖的 .NET 服务与 API。
限制:不涵盖原生 AOT 发布管线与 MSBuild 配置、裁剪安全库编写与注解、WASM AOT、MAUI AOT、源生成器编写(Roslyn API)、DI 容器内部实现与序列化深度,这些分别由其他技能处理。库兼容状态随版本变化,需以实际分析器结果为准。