替换特定项目中类的使用

Bub*_*rap 7 c# resharper visual-studio-2010

我正在使用VS2010和Resharper 5.1.

我有两个项目,一个库项目(Lib)和一个应用程序项目(App),App引用Lib.

Lib包含一个在App和Lib中使用的类X. 在App中,我现在想要用Y类替换X的所有用法.在我的情况下,Y与X无关,但如果它使重构更容易,它可以从X继承.

我目前计划使用"查找用法"功能,逐个项目并逐个更改用法.有没有更简单/自动化的方法来做到这一点?

Aak*_*shM 4

结构搜索和替换是您的朋友。你可以通过 来实现它ReSharper | Find | Search with Pattern...

  • 定义一个类型的占位符X,命名它TX
  • 制作您的查找模式$TX$
  • 指定“查找”“项目”
  • 作为检查,进行搜索 - 您应该看到以下内容的所有用法X
  • 单击替换切换按钮
  • 使 Replace 模式成为以下内容的完全限定名称Y
  • 单击“替换”

ReSharper 将向您显示所有提及的X要替换的内容 - 确保选中树顶部的复选框,然后单击“替换”。

编辑

实际上,通过在 Find 模式中使用类型占位符,可以确保仅重命名对type 的 X引用,而不是任何其他命名的X引用。

如果您希望最终得到

using A.B.C;

/* later */
Y obObject = ...
Run Code Online (Sandbox Code Playgroud)

而不是

A.B.C.Y myObject
Run Code Online (Sandbox Code Playgroud)

认为你可以通过以下方式实现这一目标:

  1. ReSharper | Options,中Tools | Code Cleanup,定义一个新的配置文件,其中仅选中“优化‘使用’指令”
  2. 在 中ReSharper | OptionsLanguages | C# | Namespace Imports添加A.B.C到“应始终导入的命名空间”
  3. ReSharper | Tools | Cleanup Code使用您刚刚定义的配置文件运行
  4. A.B.C通过从您添加到的名称空间列表中删除来进行整理

尽管这也会清理所有其他usings,这可能会使版本控制差异比您想要的要大一些。