用途:把代码中运行时的 Regex 用法迁移为 .NET 编译期源生成器实现,生成的正则具备 AOT 兼容、可调试、无运行时编译开销等特性。
主要能力:查找代码库中的正则用法,包括 new Regex(...) 构造函数、Regex.IsMatch()、Regex.Match()、Regex.Replace() 等带内联模式的静态方法调用;对模式在编译期已知的正则,将所在类改为 partial,并创建带 [GeneratedRegex] 特性的 partial 方法,例如 [GeneratedRegex("pattern", RegexOptions.IgnoreCase)] private static partial Regex MyRegex();,方法名按匹配内容命名,再把调用处替换为生成方法。
使用方式:转换后用 dotnet build 验证。若构建失败,检查类是否标记 partial、模式是否为编译期常量、.NET 版本是否为 7 或更高。
注意事项:RegexOptions.Compiled 会被源生成忽略,应移除;需要 .NET 7+;生成方法内部缓存单例;超时可用 [GeneratedRegex("pattern", RegexOptions.None, 1000)] 指定毫秒。若模式不是常量则无法使用源生成,保留运行时正则;类非 partial 需补 partial 修饰符;构建失败时查看错误信息中不支持的模式特性。
适用场景:优化正则性能、需要 AOT 兼容正则、使用 [GeneratedRegex] 特性、把 new Regex(...) 转为源生成、讨论正则编译或启动性能。
限制:仅适用于编译期已知模式与 .NET 7 及以上版本;其余细节暂未提供。