Shrink Shared CodeGen
Unity Editor UPM 包,为引用 ShrinkCommand.Runtime、ShrinkNetwork.Runtime 或 ShrinkApp.Core.Runtime 的程序集生成程序集级注册表。
该包只通过 Cecil 按程序集名和类型全名读取元数据,不在 asmdef 或 UPM 层反向引用业务包。因此 App、Command、Network 可以依赖它而不形成循环依赖。运行时不包含此包代码。
DotNet~ 包含同一 Cecil 织入核心、Roslyn Analyzer 和 ShrinkSDK.CodeGen MSBuild 包。Godot 或普通 .NET 项目引用 EventBus、Command、Network、App 等包后,会通过 buildTransitive 自动启用织入。
dotnet add package ShrinkSDK.CodeGen --version 0.2.0
可复用能力
Capability: 编译期织入事件订阅、命令和网络注册表,提供规范诊断 Aliases: 生成 织入 analyzer 注册 IL Limits: 不是运行时业务模块;Unity 织入与外部 Roslyn 分别构建 Extension: 特性声明及 MSBuild/Unity 构建入口 Evidence: ShrinkAssemblyWeaver
Unity 2022.3 的分析器 DLL 使用 Roslyn 3.8 构建,位于 Analyzers/,由 RoslynAnalyzer 标签加载,禁用普通运行时插件导入。外部 CLI/NuGet 使用 Roslyn 4.14,二者不能直接互换。SDK 仓库通过 Tools/AgentSupport/Build-UnityAnalyzer.ps1 重建 Unity 版本。
诊断:SHRINK001 订阅签名,SHRINK002 opcode/非空 route 冲突(包括引用程序集),SHRINK003 Installer 接口,SHRINK004 常量 key 声明。生命周期是否正确仍由行为测试验证。Unity 的统一 IL 后处理入口为 ShrinkRegistryILPostProcessor,避免同一程序集重复织入。