feat(cordis): 完成阶段5访问介导与诊断
This commit is contained in:
@@ -72,6 +72,8 @@
|
||||
- 是否自动监听目录变化并协调外部 DLL revision 变化
|
||||
- `externalModsReloadDelaySeconds`
|
||||
- 文件变更后延迟多少秒再尝试热加载
|
||||
- `externalAssemblyRevisionSoftLimit`
|
||||
- 外部 DLL 常驻 revision 的软阈值;达到阈值时提示执行 Domain Reload 或重启进程,默认 `16`
|
||||
- `enableHarmonyPatching`
|
||||
- 是否启用 Harmony 自动补丁
|
||||
- `enableNetworkSync`
|
||||
@@ -209,6 +211,16 @@ ShrinkModLoader.LoadNewExternalMods();
|
||||
|
||||
如果 `watchExternalModsDirectory = true`,框架还会监听新增、修改、删除、重命名事件,经过主线程 debouncer 后提交一次完整组合;同一 burst 内的中间坏文件不会覆盖当前有效 revision。
|
||||
|
||||
### 常驻 revision 诊断
|
||||
|
||||
Unity/Mono 不能从当前 AppDomain 单独卸载已载入程序集。框架保留当前 revision 的生效语义,同时通过以下接口暴露实际常驻情况:
|
||||
|
||||
```csharp
|
||||
var snapshot = ShrinkModDiagnostics.CaptureExternalAssemblies(settings);
|
||||
```
|
||||
|
||||
快照包含当前与历史 revision、来源路径、程序集名、SHA-256 revision、载入字节数、常驻数量和软阈值状态。失败 revision 可以成为已载入的历史程序集,但不会成为 current;达到软阈值只告警,不伪造卸载行为。
|
||||
|
||||
## Harmony 热补丁
|
||||
|
||||
如果运行环境里存在 `0Harmony`,ContextHost 会把每个模组的补丁租约作为可逆效应管理:激活时调用
|
||||
@@ -649,7 +661,7 @@ public sealed class DemoFullMod : ShrinkModBase
|
||||
- 模组 ID 必须全局唯一
|
||||
- 必选依赖缺失或版本不满足时,装载直接失败
|
||||
- 检测到循环依赖时,装载直接失败
|
||||
- 外部 DLL 只支持热添加,不支持热卸载
|
||||
- 外部 DLL 支持当前组合的添加、替换与删除;已载入的程序集 revision 仍常驻,回滚和卸载单位是模组 fiber 与其效应
|
||||
|
||||
## 关键文件
|
||||
|
||||
|
||||
Reference in New Issue
Block a user