【问题标题】:Replace usage of a class in a specific project替换特定项目中类的使用
【发布时间】:2011-10-06 09:30:09
【问题描述】:

我正在使用带有 Resharper 5.1 的 VS2010。

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

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

我目前计划使用“查找用途”功能,按项目分组并一一更改用途。有没有更简单/自动化的方法来做到这一点?

【问题讨论】:

  • 如何在当前项目中快速替换 - 将类名 X 替换为 Y?

标签: c# visual-studio-2010 resharper


【解决方案1】:

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

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

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

编辑

确实是通过在我们的 Find 模式中使用 type 占位符来确保仅引用 type X,而不是任何其他名为 X 的引用,已重命名。

如果你更愿意结束

using A.B.C;

/* later */
Y obObject = ...

而不是

A.B.C.Y myObject

认为您可以通过以下方式实现:

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

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

【讨论】:

  • 我假设查找模式确保只替换对类 X 的引用,而不是在 cmets 中或作为属性名称出现 X?此外,作为后续,替换完全限定名称并将正确的 using 语句添加到相关文件中的最简单方法是什么?
猜你喜欢
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多