Visual Studio: существует ли рефакторинг "переместить класс в другое пространство имен"?


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

7 53

7 ответов:

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

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

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

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

  • операторы пространства имен
  • С помощью директивы
  • полные имена типов

этот ответ относится по крайней мере к Visual Studio 2013 и 2015 без resharper требуется

  1. переместить файлы классов в новую папку
  2. открыть 'найти и заменить'
  3. выберите "заменить в файлах"
  4. введите оригинал определение пространства имен в какой области например. MyCorp.AppStuff.Api
  5. введите новая определение пространства имен в поле "заменить на", например. MyCorp.AppStuff.Api.Extensions
  6. выберите новая папка с помощью кнопки обзора поля "Look in"..., или введите путь к папке
  7. нажать Заменить Все

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

одно расширение, которое мне нравится сегодня (конец 2017 года) составляет Исправить Пространство Имен расширение против : https://marketplace.visualstudio.com/items?itemName=vs-publisher-599079.FixNamespace#overview

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

С Resharper:CTRL+R+O

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

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

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

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

сделал