状态
Accepted(Revised v2,2026-06-29)。
背景
Native AOT 带来快速启动、低内存与小体积,但在 .NET 10 下 SqlSugar、CAP、Quartz、JsonPatch 与 SignalR 是否完全 AOT 安全尚未验证。在 v1 强制全服务 Native AOT 风险很高,可能被迫替换已选定的技术。
决策
把 Native AOT 定位为设计约束与分阶段验证目标,而非 v1 硬发布门禁。设计上:优先源生成、显式 DI 注册、最小反射;禁止启动期全 assembly 扫描与重度运行时反射。核心库启用 IsAotCompatible;API 在无严重警告下达到 PublishTrimmed。
v2 修订把 trim 发布升级为硬门禁:dotnet publish -p:PublishTrimmed=true 是一个 verify-all 步骤。SqlSugar 适配器、Application 与 Domain 必须产生零未登记 IL 警告;新反射代码是 P0 合并阻断。Native AOT 全发布仍是独立的可选 profile,但所有新代码必须 AOT 兼容。运行时反射 API(MakeGenericType、GetMethod、Activator.CreateInstance、Assembly.GetTypes)在框架默认路径中被禁止;必需的反射(如 EF Core 模型构建)必须以 // AOT-EXEMPT: <reason> 注解、附带单元测试并登记到 trim-publish-status 台账。
后果
该设计是务实的——不被未验证的 AOT 假设绑架,无需强制替换 SqlSugar/CAP——同时仍向 AOT 收敛。风险是若警惕放松,反射/动态代码会回流;AOT/Trim 验证清单与 REQ-GATE-001 反射扫描缓解了这一点。