gewuyou b96565ffa3 docs(documentation): 扩展项目功能文档覆盖
- 更新 meta-package 与安装入口,明确聚合范围、当前运行时基线和首页选包路径
- 补充 Game 配置工具文档与导航,把 VS Code config workflow 纳入 reader-facing 采用链路
- 修正文档与实现不一致的 source-generator 与 CQRS 契约说明,补充 support module 边界
- 记录 RP-038 批处理恢复点、委派结论和本轮验证结果
2026-04-25 17:10:37 +08:00

5.4 KiB

title, description
title description
源码生成器 按模块梳理 GFramework 当前发布的源码生成器包、运行时归属与推荐选包入口。

源码生成器

Source Generators 栏目对应 GFramework 当前按模块拆分发布的编译期工具链。

这里的重点不是“存在一个统一的大生成器包”,而是帮助你确认应该安装哪个生成器包、它服务哪个运行时模块,以及继续去看哪一类专题页。

当前包拆分

GFramework 当前发布的生成器包是:

  • GeWuYou.GFramework.Core.SourceGenerators
  • GeWuYou.GFramework.Game.SourceGenerators
  • GeWuYou.GFramework.Cqrs.SourceGenerators
  • GeWuYou.GFramework.Godot.SourceGenerators

不存在 GeWuYou.GFramework.SourceGenerators*.SourceGenerators.Attributes 这类聚合包。

共享支撑模块

除了上面的可直接安装包,仓库里还有三类跟随这些生成器共同演化的支撑目录:

  • GFramework.SourceGenerators.Common
    • 承载跨生成器共享的基类、通用 diagnostics 和生成冲突规则。
  • GFramework.Core.SourceGenerators.Abstractions
    • 承载 Core 侧生成器特性定义,例如 [Log][ContextAware][GetModel][GenerateEnumExtensions]
  • GFramework.Godot.SourceGenerators.Abstractions
    • 承载 Godot 侧生成器特性定义,例如 [GetNode][BindNodeSignal][AutoScene][AutoUiPage]

这些目录当前不是新的安装入口。对读者更重要的判断是:

  • 应该安装哪个 *.SourceGenerators
  • 当前看到的 attribute 和 diagnostics 属于哪条生成链
  • 继续阅读时应该回到哪个运行时或专题页

先按场景选包

  • 想减少日志、上下文注入、模块自动注册等 Core 侧样板代码:
    • 选择 GeWuYou.GFramework.Core.SourceGenerators
  • 想把 schemas/**/*.schema.json 生成成配置类型和表包装:
    • 选择 GeWuYou.GFramework.Game.SourceGenerators
  • 想让 CQRS handler registry 在编译期生成,缩小运行时反射扫描范围:
    • 选择 GeWuYou.GFramework.Cqrs.SourceGenerators
  • 想在 Godot 项目里生成 AutoLoad / Input Action 入口、节点 / 信号样板,或补齐 Scene/UI 包装与导出集合注册辅助:
    • 选择 GeWuYou.GFramework.Godot.SourceGenerators

与运行时的关系

这些包都是编译期工具链,不是运行时库。

对应关系如下:

生成器包 主要服务的运行时
GFramework.Core.SourceGenerators GFramework.Core
GFramework.Game.SourceGenerators GFramework.Game
GFramework.Cqrs.SourceGenerators GFramework.Cqrs
GFramework.Godot.SourceGenerators GFramework.Godot

安装时通常保持生成器包与对应运行时包版本一致,并将生成器声明为:

<PackageReference Include="GeWuYou.GFramework.Core.SourceGenerators"
                  Version="x.y.z"
                  PrivateAssets="all"
                  ExcludeAssets="runtime" />

其他生成器包的安装模式相同。

GFramework.SourceGenerators.Common 和两个 *.SourceGenerators.Abstractions 目录当前都跟随对应生成器模块维护:

  • 不是额外安装的独立包选择题
  • 主要用于承载 attribute、共享基类和跨生成器共用 diagnostics
  • 读者只需要在排查 attribute 语义、冲突规则或生成失败原因时回到这些源码目录确认契约

这个栏目怎么读

Core 侧通用生成器

Game / CQRS 相关生成器

Godot 专用生成器

推荐接入顺序

  1. 先确认你已经选定运行时层,而不是先装生成器
  2. 再按运行时模块补充对应的生成器包
  3. 只在确实需要的项目里安装生成器,避免为了“可能以后会用”而把所有包一起引入

例如:

  • 新项目只需要 Core 上下文注入和日志辅助:
    • 安装 Core + Core.SourceGenerators
  • 需要静态 YAML 配置:
    • 安装 Game + Game.SourceGenerators
  • 需要 CQRS 生成注册表:
    • 安装 Cqrs + Cqrs.SourceGenerators

对应模块入口