I’ve now implemented smart symbol renaming for the next release.
You can select a name in the source editor, or place the caret within or immediately after it, then press F2 or choose Rename Symbol... from the context menu or Edit menu. Single-character names work too.
Changing a declaration’s Name field uses the same operation. For example, changing a method’s name and pressing Enter opens a preview that includes its callers. Renaming from a caller also updates the method’s declaration and Name field.
This covers local variables, parameters, methods, properties, constants, events, enums and source types. Studio follows the compiler’s resolved references, so unrelated symbols with the same spelling stay unchanged. Method renames account for the selected overload and any required override/interface relationships.
Before applying the rename, Studio checks the proposed name and conflicts and shows the required changes. Cancellation leaves the rename unapplied, unsaved work is preserved, and the complete rename can be undone and redone as one operation. Relevant Desktop and Web designer references and event bindings are included.
Comments and literal string text remain unchanged. The scope is the open solution, so external callers and arbitrary names supplied through reflection strings still need manual review.
@DrScott, a supported API for third-party analysis and refactoring tools remains separate work. This uses the compiler’s semantic information internally, and I’m still interested in exploring how that could support tools like yours.