Заменить использование класса в конкретном проекте - PullRequest
7 голосов
/ 06 октября 2011

Я использую VS2010 с Resharper 5.1.

У меня есть два проекта: проект библиотеки (Lib) и проект приложения (App), ссылки на приложения Lib.

Lib содержит класс X, который используется как в App, так и в Lib. В приложении теперь я хочу заменить все применения X классом Y. В моем случае Y не связан с X, но он может наследовать от X, если это облегчает рефакторинг.

Мой текущий план использования функции «Поиск использования», группировка по проекту и изменение использования по одному. Есть ли более простой / автоматизированный способ сделать это?

1 Ответ

4 голосов
/ 06 октября 2011

Структурный поиск и замена ваш друг здесь. Вы добираетесь до этого через ReSharper | Find | Search with Pattern....

  • Определите заполнитель типа X, назовите его TX.
  • Создай свой шаблон поиска $TX$
  • Укажите "Искать" "Проект"
  • В качестве проверки выполните поиск - вы должны увидеть все случаи использования X
  • Нажмите кнопку «Заменить»
  • Сделать шаблон замены полностью квалифицированным именем Y
  • Нажмите Заменить

ReSharper покажет вам все упоминания о X, который он хочет заменить - убедитесь, что установлен флажок в верхней части дерева, затем нажмите "Заменить".

редактировать

Это действительно с помощью заполнителя type в нашем шаблоне Find, который гарантирует, что только ссылки на type X, а не что-либо еще с именем X, будут переименованы .

Если вы предпочитаете получить

using A.B.C;

/* later */
Y obObject = ...

вместо

A.B.C.Y myObject

Я думаю Вы можете достичь этого через:

  1. В ReSharper | Options, Tools | Code Cleanup определите новый профиль, в котором отмечена галочка «Оптимизировать» с использованием «директив»
  2. В ReSharper | Options, Languages | C# | Namespace Imports добавить A.B.C в «Пространства имен, которые всегда должны быть импортированы» *
  3. Запустите ReSharper | Tools | Cleanup Code, используя профиль, который вы только что определили
  4. Приведите в порядок, удалив A.B.C из списка пространств имен, который вы добавили в

, хотя это также очистит все остальные using s, что может сделать управление версиями немного больше, чем вы хотите.

...