用途:将 C# 现有静态依赖调用点按 codemod 方式替换为注入的包装接口或内置抽象,支持以单文件、项目或命名空间为边界增量迁移。常见场景包括把 DateTime.UtcNow 迁移到 TimeProvider.GetUtcNow(),把 File.* 迁移到 IFileSystem.File.*,并为受影响类补充构造函数注入、更新测试。
主要能力:先校验前置条件(目标框架是否为 .NET 8+ 或引用对应包)、追踪生产环境组合根(Program.cs、Startup.cs、工厂与手工构造点)、锁定成员集合与调用清单;按替换映射逐点机械替换;支持构造函数、主构造函数或静态类的环境接缝(ambient seam)三种注入方式;迁移后做范围排他性校验、构建与针对性测试验证,并输出变更摘要。
用法要点:缺失抽象即停止,不擅自加包或伪造本地接口;一次读取对应一次替换,不提升、合并或缓存读操作;范围要求穷尽且排他,不改相邻成员或文件。替换后应搜索确认范围内零残留,并核对明确要求保留的文件未变更。构建使用 dotnet build <project.csproj>,测试使用 dotnet test <affected-test-project.csproj>。
限制与约束:不适用于尚无包装或抽象需要从头设计的情况(应先用 generate-testability-wrappers);不用于检测静态依赖或测试框架迁移。需保留 DateTimeKind 语义,避免静默行为回归;当目标字段为 DateTimeOffset 时直接赋值,不要强制转回 DateTime。静态类使用 AsyncLocal<T> 环境接缝,生产默认真实实现,测试按异步流隔离覆盖并在作用域释放时恢复。资料未提供官方文档正文、定价与更多平台信息。