Replace usage of a class in a specific project
I'm using VS2010 with Resharper 5.1.
I have two projects, a library project (Lib) and an application project (App), App references Lib.
Lib contains a class X which is used in both App and Lib. In App i now want to replace all usages of X with class Y. In my case Y is unrelated to X, but it could inherit from X if it makes refactoring easier.
My current plan to use the "Find usages"开发者_C百科 feature, group by project and change the usages one by one. Is there an easier/automated way to do this?
Structural Search and Replace is your friend here. You get to it through ReSharper | Find | Search with Pattern....
- Define a placeholder of type
X, name itTX. - Make your Find pattern
$TX$ - Specify to "Look in" "Project"
- As a check, carry out the search - you should see all the usages of
X - Click the Replace toggle button
- Make the Replace pattern the fully-qualified name of
Y - Click Replace
ReSharper will show you all the mentions of X it wants to replace - ensure the checkbox at the top of the tree is checked, then click Replace.
edit
It is indeed by using a type placeholder in our Find pattern that ensure that only references to the type X, rather than anything else named X, are renamed.
If you would prefer to end up with
using A.B.C;
/* later */
Y obObject = ...
rather than
A.B.C.Y myObject
I think you can achieve this through:
- In
ReSharper | Options,Tools | Code Cleanup, define a new profile which has just "Optimize 'using' directives" checked - In
ReSharper | Options,Languages | C# | Namespace ImportsaddA.B.Cto "Namespaces that should always be imported` - Run
ReSharper | Tools | Cleanup Codeusing the profile you just defined - Tidy up by removing
A.B.Cfrom the namespaces list you added it to
although this will also clean up all other usings, which might make the version control diff a bit larger than you want.
加载中,请稍侯......
精彩评论