用途:为 .NET 8+ 应用提供完整的 Native AOT 编译与发布流程指导,覆盖 PublishAot 配置、类型保留、P/Invoke、体积优化和自包含容器部署。
主要能力:应用项目用 <PublishAot>true</PublishAot> 启用发布,库项目改用 IsAotCompatible/IsTrimmable,不要混用。可开启 EnableAotAnalyzer/EnableTrimAnalyzer 在开发期捕获 IL2xxx(裁剪)与 IL3xxx(AOT)警告,无需发布即可分析:dotnet build /p:EnableAotAnalyzer=true /p:EnableTrimAnalyzer=true。反射无法静态分析时,用 ILLink 描述符 XML(TrimmerRootDescriptor)或 [DynamicDependency] 保留类型,不要用已失效的 RD.xml。P/Invoke 推荐 [LibraryImport] 替代 [DllImport],以编译期生成封送代码。体积优化可用 StripSymbols、OptimizationPreference=Size、InvariantGlobalization、StackTraceSupport=false、EventSourceSupport=false。容器部署使用 runtime-deps 基础镜像,因运行时已内嵌于二进制。
用法:dotnet publish -c Release -r linux-x64(可换 win-x64、osx-arm64)。ASP.NET Core 用 CreateSlimBuilder 与源生成 JSON 上下文,MVC 控制器不兼容 AOT。
适用场景:控制台应用、ASP.NET Core Minimal API、需最小体积与快速启动的自包含部署。
限制:MAUI iOS/Mac Catalyst AOT、WASM AOT、源生成器编写、DI 与序列化细节、容器编排不在本技能范围;Blazor Server 与 SignalR 在 .NET 10 仍不支持 Native AOT。具体版本行为与体积数据以资料所述为准。