26 lines
1.7 KiB
Markdown
26 lines
1.7 KiB
Markdown
# 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` 自动启用织入。
|
|
|
|
```powershell
|
|
dotnet add package ShrinkSDK.CodeGen --version 0.2.0
|
|
```
|
|
|
|
## 可复用能力
|
|
|
|
<!-- shrink:capabilities -->
|
|
Capability: 编译期织入事件订阅、命令和网络注册表,提供规范诊断
|
|
Aliases: 生成 织入 analyzer 注册 IL
|
|
Limits: 不是运行时业务模块;Unity 织入与外部 Roslyn 分别构建
|
|
Extension: 特性声明及 MSBuild/Unity 构建入口
|
|
Evidence: [ShrinkAssemblyWeaver](Editor/Core/ShrinkAssemblyWeaver.cs)
|
|
<!-- /shrink:capabilities -->
|
|
|
|
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,避免同一程序集重复织入。
|