用途:分析并配置 .NET 项目或解决方案,使其支持 Native AOT。用于用户想启用 Native AOT、检查 AOT 兼容性或优化 AOT 部署时。
主要能力与流程:
- 询问范围为解决方案级还是指定项目。
- 检测项目类型:ASP.NET Core(Microsoft.AspNetCore 引用、WebApplication、CreateBuilder)、Blazor Server(Microsoft.AspNetCore.Components.Server)、MVC(AddControllersWithViews、AddMvc)。
- 对 Blazor Server、MVC、会话状态、SPA 中间件等场景给出不支持警告,并询问继续兼容项目还是中止。
- 对兼容项目调用子技能:dotnet-source-gen-json(JSON 序列化 AOT 就绪,含多态类型)、dotnet-source-gen-options-validation(Options 模式)、dotnet-source-gen-regex(Regex)、dotnet-source-gen-logging(日志)。
- 配置 AOT 设置。解决方案级时检查 src/Directory.Build.props,否则用解决方案根,添加或合并 IsAotCompatible、EnableTrimAnalyzer、EnableSingleFileAnalyzer、EnableAotAnalyzer;项目级时在各 .csproj 添加 PublishAot。
- ASP.NET Core 项目建议用 CreateSlimBuilder() 替代 CreateBuilder(),为 Minimal API 启用 EnableRequestDelegateGenerator,HTTPS/HTTP3 需注意(CreateSlimBuilder 不含);可选择添加 EmitCompilerGeneratedFiles 查看生成代码。
- 运行 dotnet build 验证 AOT 警告。
限制与说明:需要 .NET 8+;IsAotCompatible 仅为工具/分析器提示标志,不使代码自动兼容 AOT;需消除热路径反射,必要时用源生成器;System.Text.Json 需在 JsonSerializerContext 注册所有类型。官方文档链接涉及 Native AOT 总览、ASP.NET Core AOT、请求委托生成器、AOT 限制与裁剪库准备。