Visual Studio: Is there a "move class to different namespace" refactoring?

Viewed 60542

I'm doing some architectural cleanup that involves moving a bunch of classes into different projects and/or namespaces. Currently I'm moving the files by hand, building, and then manually adding using Foo statements as needed to resolve compilation errors. Anyone know of a smarter way of doing this? (We're a CodeRush and Refactor! shop, but I'd be interested to hear if Resharper has support for this)

9 Answers

Visual Studio 2019 provides at least 2 built-in options:

'Move to namespace...' refactoring can be triggered on any class, and VS will prompt for the target namespace.

'Change namespace to...' refactoring is provided for when the current file namespace doesn't match with the folder structure.

This can be used to move individual classes to a different namespace by:

  1. creating the desired folder structure
  2. moving the file
  3. applying the mentioned refactoring (CTRL+. with the cursor over the namespace)

These operation ensures that all references are updated accordingly.

As mentioned in the comments, this answer is now outdated. Please see the up-to-date answer below


Resharper is the only tool I am aware of what has this ability. There is also a lot of other functionality that it has that is missing in CodeRush and Refactor!

It's not the best outcome but can be done without plugins or tools, only with Visual Studio. Find and replace in Entire Solution, Match case, Match whole word. Find what: class name, Replace with: New.Namespace.ClassName (fully qualified class name).

If you have 100+ references of the moved class and other classes in old namespace what are not moved this is the only foolproof and free solution I found. The only case when it leads to errors is when you have same class name in other namespace.

Related