Files

5.3 KiB
Raw Permalink Blame History

AtomUI.Toolchain 模块概览

AtomUI.Toolchain 统一维护 AtomUI 的构建任务、公共编译期模型、AOT/裁剪后端和工具准备配方。 唯一源码工程是 src/AtomUI.Toolchain/AtomUI.Toolchain.csproj;构建产物服务于开发、发布和打包,不进入应用运行时依赖。

该模块解决的是构建工具的职责和交付分散问题。它把普通编译所需的 worker 与发布时才需要的引擎适配区分开, 在一个工程中管理源码和构建入口,同时保留真实依赖分析所需的版本隔离。产品库 Debug 仅 net10.0、Release 同时 包含 net8.0/net10.0 的规则由构建与打包架构拥有。

模块边界

  • AtomUI.Generator 保持独立的 netstandard2.0 Roslyn Analyzer 身份,负责生成应用/类库编译所需的代码。
  • Toolchain 的 Tasks worker 负责构建文件、发布输入和产物验证;引擎适配器负责对应 ILLink/ILC 阶段的接入。
  • Common 提供共同的数据格式和校验逻辑;应用可达性仍由实际 ILLink/ILC 计算。
  • Repository 构建入口准备和分发工具;NuGet 消费应用使用包内工具,不构建编译器源码。

包内 AtomUIThemeDefinition 由 Tasks worker 在编译前以权威 Reader/XSD 校验并生成中立 AdditionalFile,Generator 据 Token 契约生成类型化主题程序。Core 的 syntax-document 特例已由此共同路径替代,原 XML 仍可作为 AvaloniaResource 显式读取。Tasks 源链接 Core Reader/XSD、内置字面量 codec、converter 和必要值类型, 以同一运行时语义生成有界类型候选。私有版本 4 中间输入传输声明位置、摘要、规范值及 primitive payload。 Tasks 不执行主题算法或用户 codec,不复制运行时配置/快照模型;Generator 只做符号校验与类型化 C# 生成。 worker 的 Avalonia 托管依赖随工具资产白名单发布,不进入应用运行时闭包。 产物身份与校验见编译主题包。

GenerateThemeAssetWrappersTask 保留编译型资源与 deferred wrapper 输出,作为生成器不能直接静态构造时的 fallback; 不重写作者的 classless AXAML,不改变 AvaloniaXaml/AdditionalFiles 的 URI、Link 或源身份。Generator 可为已绑定且 可合法构造的作者字典、精确默认 typed theme 选择直接或 AddDeferred 工厂;此选择属于生成器,不由任务猜测 C# 构造函数可访问性。字典与主题的延迟语义见控件注册契约。

源码职责

以下路径均相对于 src/AtomUI.Toolchain/:

目录 职责
Tasks/ 隔离任务进程、资源与语言包任务、工具解析、SDK 输入准备和最终产物校验
Common/Registration/ 候选记录读取、严格协议、内容身份、输入快照和调用域校验
Common/Registration/Cecil/ Cecil 实体绑定、类型转发、方法体模板和 Core 发布视图校验
Common/ThemeDefinitions/ XML 声明与诊断的私有构建传输,供 Tasks 与 Generator 协作
Common/Localization/ 与 Generator 共用的 XLIFF、语言包和中立诊断模型
Common/SourceGeneration/ 构建期代码身份与命名等中立辅助逻辑
Backends/ILLink8/ 在真实 ILLink8 Mark 闭包中选择片段,Sweep 前物化选中调用
Backends/ILLink10/ Browser TypeMap 物化及 net8-record 到官方 TypeMap 的分析前桥接
Backends/ILC8/ 定版 ILC8 条件依赖适配、原生输出证明、维护者构建配方与专项入口

正式文档导航

文档 所有权
设计思路与职责边界 为什么建设 Toolchain、单工程多产物的理由、Generator 边界、Avalonia 借鉴和保精度约束
按目标框架选择注册后端 net8/现代框架分流、实际能力门禁及独立的旧包 ABI 桥接
构建、交付与验证 Tasks/ILLink/ILC 构建配置、构建命令、输出隔离、工具准备时序、维护入口与验证要求
构建与打包架构 跨项目 Repository/NuGet 接线、唯一资产白名单和运行时隔离
ILLink10 后端详解 Browser 标记后物化、工具身份和回执
.NET 8 条件后端 ILLink8/ILC8 机制、SDK 接线与现行支持范围
条件注册协议 ConditionalRecord ABI、输入快照和输出协议
本地化构建 XLIFF、静态语言包和 Generator/Tasks 的语义分工
编译主题包 有界 XML 校验、声明传输、产物身份与校验

构建成功、单元测试通过和特定平台的实际发布是不同层次的证据。Toolchain 的工程组织不扩大既有平台支持; 当前能力边界由 AOT 与裁剪架构及各后端文档记录。