用途:在 .NET 解决方案或多解决方案 monorepo 中重命名 C# 符号。该技能在 src/ 中提供一个基于 Roslyn 的重命名 CLI,设计为一次性、无状态:一次调用即解析目标、校验请求,并返回预览或已应用的更改,没有公开的 prepare 步骤。
主要能力:支持重命名 NamedType、Method、Property、Field、Event、Parameter、Local、TypeParameter、Namespace 等源支持的符号;不支持构造函数、析构函数、静态构造函数和索引器。默认重命名注释、不重命名字符串字面量、不重载重载成员;对单一声明且文件名与类型名匹配的命名类型可安全移动文件(避免 delete+add)。
使用方式:若已通过 install.sh 安装,优先使用预构建 CLI:bin/csharp-refactor rename-symbol <sln|slnx|directory> <file> <line> <oldName> <newName> [dryRun=false|true];否则在技能目录运行 dotnet run --project src/CSharpRefactoring.Cli -- rename-symbol <sln|slnx|directory> <file> <line> <oldName> <newName> [dryRun=false|true]。用 rg -n 定位符号并复制 1-based 行号。普通重命名请求直接调用一次(默认应用);仅在用户明确要求预览、目标有歧义或风险较高时使用 dryRun=true。目录模式用于包含多个 .sln/.slnx 或共享项目的仓库,会递归发现并合并为临时 .slnx 后执行重命名。
限制:工具无状态,每次调用都会加载解决方案;预览不保留状态,若工作区变化需重新预览。捆绑源码需要 .NET 10,首次运行会还原 NuGet 包。错误码包括 invalid_solution_path、invalid_file_path、file_not_in_solution、invalid_line_number、invalid_old_name、old_name_not_found_on_line、ambiguous_old_name_on_line、unsupported_symbol_kind、symbol_not_in_source、invalid_new_name、same_name、no_changes、apply_failed、operation_timeout,可据此调整输入。