Visual Studio: существует ли рефакторинг "перемещение класса в другое пространство имен"? - PullRequest
58 голосов
/ 06 октября 2008

Я занимаюсь архитектурной очисткой, которая включает в себя перемещение нескольких классов в разные проекты и / или пространства имен. В настоящее время я перемещаю файлы вручную, собираю, а затем вручную добавляю , используя операторы Foo , необходимые для устранения ошибок компиляции. Кто-нибудь знает более разумный способ сделать это? (Мы магазин CodeRush и Refactor!, Но мне было бы интересно узнать, есть ли у Resharper такая поддержка)

Ответы [ 8 ]

33 голосов
/ 29 июля 2010

Visual Studio 2010 имеет возможность переименовать пространство имен. Поместите курсор на имя пространства имен и нажмите F2 . Или просто переименуйте его в коде и нажмите Shift + Alt + F10 , Введите , увидев появление красного загора.

Reharper также может переименовать пространства имен . Цитата:

Рефакторинг Переименовать пространство имен позволяет пользователям переименовать конкретный пространство имен и автоматически исправить все ссылки на пространство имен в код. Следующие использования переименованы:

  • Операторы пространства имен
  • Использование директив
  • Квалифицированные имена типов
28 голосов
/ 06 октября 2008

Resharper - единственный инструмент, который я знаю о том, что обладает этой способностью. Также есть много других функциональных возможностей, отсутствующих в CodeRush и Refactor!

8 голосов
/ 20 декабря 2016

Этот ответ относится как минимум к Visual Studio 2013 и 2015 без необходимости уточнения

  1. Переместить файлы классов в новую папку
  2. Открыть «Найти и заменить»
  3. Выберите «Заменить в файлах»
  4. Введите оригинальное определение пространства имен в поле «Найти что», например. MyCorp.AppStuff.Api
  5. Введите определение пространства имен new в поле «Заменить», например. MyCorp.AppStuff.Api.Extensions
  6. Выберите новую папку, используя кнопку обзора поля «Искать в» ... , или введите путь к папке
  7. Нажмите кнопку Заменить все
3 голосов
/ 11 декабря 2017

Существуют частичные решения для VS 2015 и VS 2017 без Resharper с использованием бесплатных расширений.

Одним из расширений, которое мне нравится сегодня (конец 2017 года), является Fix Namespace VS Extension: https://marketplace.visualstudio.com/items?itemName=vs-publisher-599079.FixNamespace#overview

Он анализирует структуру папок вашего решения и предлагает рефакторинг пространства имен, используя это. К сожалению, он не идеален: он не очень хорошо отслеживает зависимости, но решил для меня львиную долю работы.

2 голосов
/ 27 октября 2015

С Resharper: CTRL + R + O

Затем дважды нажмите клавишу со стрелкой вниз, чтобы выбрать Переместить тип в другое пространство имен .

1 голос
/ 21 апреля 2019

Начиная с Visual Studio 2019, предоставляется новый рефакторинг «Изменить пространство имен на ...», когда текущее пространство имен файла не соответствует структуре папки.

Это можно использовать для перемещения отдельных классов в другое пространство имен:

  1. создание желаемой структуры папок
  2. перемещение файла
  3. применение упомянутого рефакторинга (CTRL +. С курсором над пространством имен)

Операция гарантирует, что все ссылки обновляются соответствующим образом.

1 голос
/ 07 декабря 2011

Так как был дан ответ выше (я предполагаю), эта функция была добавлена ​​в CodeRush. Просто поместите карат на Тип , который нужно переместить, и вы увидите опцию Переместить тип в пространство имен на Refactor! контекстное меню. Это переместит тип в новое пространство имен и обновит ссылки. Вы все еще можете переместить файл в папку с решением, которая соответствует имени пространства имен.

0 голосов
/ 23 июня 2017

Если вы не можете или не хотите использовать Re $ harper, Notepad ++ - ваш друг:

  1. Убедитесь, что в Visual Studio нет сохраненных изменений для файлов, которые необходимо переместить в новое пространство имен
  2. Открыть все файлы, которые содержат пространство имен, которое необходимо изменить в Notepad ++
  3. Открыть Найти и заменить (CTRL + H)
  4. Заполните поле «Найти что» и замените его полями
  5. Нажмите Заменить все во всех открытых документах
  6. Сохранить все изменения во всех документах (CTRL + SHIFT + S)
  7. Переключитесь на Visual Studio и перезагрузите все документы ( Да для всех при запросе)

DONE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...