2017-01-27 13 views
1

У меня есть несколько сотен классов, которые еще не принадлежат ни одному пространству имен. Я хотел бы выбрать их и поместить их в новое пространство имен. Есть ли какой-либо полуавтоматический способ сделать это в Visual Studio или с помощью инструмента, такого как Resharper?Как разместить большой выбор файлов в пространстве имен в Visual Studio?

Он должен работать таким образом, чтобы я мог выбирать файлы для размещения в пространстве имен, потому что не все из них должны меняться. Лучше всего было бы просто выбрать те, которые мне нужны в проекте, и нажать какое-нибудь макроопределение, чтобы добавить объявление пространства имен к выбранным файлам.

В настоящее время я начал открывать файлы по отдельности, выбрав определение класса и нажав CTRL + K + S, чтобы окружать пространство имен, но это может занять несколько дней.

+2

Звучит как довольно простая программа на C# для записи. Это просто манипуляция текстовыми файлами. Не требует обновления файла проекта или чего-либо еще. Я знаю, что не потратил бы несколько дней на это, когда смогу автоматизировать его! – itsme86

+1

Этот вид работы вполне типичен для perl или даже sed, скриптов FWIW. C# будет работать, но эти языки были созданы для обработки текста. – BradleyDotNET

ответ

2

Просто переместите файлы в папку, представляющую требуемое пространство имен, затем щелкните правой кнопкой мыши по папке в обозревателе решений и выберите Refactor → Настройте пространства имен. ReSharper предложит вам обновить файлы и затем обновит пространства имен в этих файлах. Дополнительную информацию см. В документах по адресу Adjust Namesapces.

+0

Спасибо, это именно то, что я хотел. Я собирался написать сценарий, как это было предложено другими комментариями, но поскольку у меня уже есть ReSharper ... отлично работает. – Xarbrough

+0

Я хотел бы добавить, что ReSharper в настоящее время поддерживает только «исправление» пространств имен, проверяя, где хранятся файлы, а затем настраивает пространство имен на структуру папок. Это не всегда полезно. Например, при работе в Unity3D вы почти никогда не имеете структуру папок и пространства имен в синхронизации. Тем не менее, было очень просто использовать ReSharper для фактического создания объявлений пространства имен, а затем настроить вывод с помощью поиска и замены регулярных выражений. – Xarbrough

+0

Действительно. ReSharper будет определять имя пространства имен в структуре папок. Вы можете удалить папку из сгенерированного имени, но, установив для свойства «Поставщик пространства имен» значение «false» в окне «Свойства» при выборе папки. Подробнее см. [Docs] (https://www.jetbrains.com/help/resharper/2016.3/CheckNamespace.html). – citizenmatt