替换特定项目中类的使用

时间:2011-10-06 09:30:10

标签: c# visual-studio-2010 resharper

我正在使用VS2010和Resharper 5.1。

我有两个项目,一个是图书馆项目(Lib)和一个应用程序项目(App),App引用了Lib。

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

我目前计划使用“查找用法”功能,逐个项目并逐个更改用法。有没有更容易/自动化的方法来做到这一点?

1 个答案:

答案 0 :(得分:4)

Structural Search and Replace是你的朋友。你可以通过ReSharper | Find | Search with Pattern...获得它。

  • 定义X类型的占位符,将其命名为TX
  • 制作查找模式$TX$
  • 指定“查找”“项目”
  • 作为支票,请执行搜索 - 您应该会看到X
  • 的所有用法
  • 点击替换切换按钮
  • 使替换模式成为Y
  • 的完全限定名称
  • 点击替换

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

修改

确实是在我们的“查找”模式中使用类型占位符,确保只引用类型 X,而不是名为{{ 1}},重命名。

如果您希望以

结束
X

而不是

using A.B.C;

/* later */
Y obObject = ...

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

  1. A.B.C.Y myObject ReSharper | Options中,定义一个新的配置文件,该配置文件只使用“指令”进行“优化”检查
  2. Tools | Code CleanupReSharper | OptionsLanguages | C# | Namespace Imports添加到“应始终导入的命名空间”
  3. 使用您刚刚定义的配置文件
  4. 运行A.B.C
  5. 通过从命名空间列表中删除ReSharper | Tools | Cleanup Code来整理,然后将其添加到
  6. 虽然这也会清理所有其他A.B.C,这可能会使版本控制差异大于你想要的。