Движущиеся файлы проектов в проекте.NET

Это не связано с кодом, но связанный IDE. Я работаю над решением.NET приблизительно с 35 различными проектами. Эти проекты должны быть реорганизованы в новую структуру папок. Почему? Поскольку приблизительно 10 из тех будут удалены, и остальные будут разделены на более логические единицы. Один способ сделать это путем создания нового решения, Drag&Drop проекты в новое дерево папки в Windows Explorer, и затем просто добавьте их к новому решению. Честно говоря, это звучит немым!

Существует ли способ просто переместить проекты в различные папки из IDE? Я попробовал к "сохранить Как" проекты, но IDE не примет другую папку.

Это является раздражающим, но потому что было несколько неправильных вариантов на имена папок, я теперь застреваю с теми именами.


Пример: Прямо сейчас у меня есть основная папка проекта, которая содержит дочерние папки под названием "Клиент", "Сервер", "Бизнес", "База данных" и безотносительно больше. В тех дочерних папках существует больше дочерних папок, каждый трехзначное число. В каждой пронумерованной папке существует проект, который называют некоторым логическим способом, как Компания. Бизнес. Клиенты с дополнительной логикой в рамках этого проекта. Проблема состоит в том, что не все проекты теперь следуют этому соглашению о присвоении имен, и я считаю это устаревшим. Проект как Компания. Бизнес. Клиенты должны просто быть в папке под названием Компания. Бизнес. Клиенты в корне проекта, таким образом, легче распознать. Имя уже проясняет, что это - бизнес-класс для этого проекта. Ясное подразделение в клиентских классах, бизнес-классах и безотносительно более справедливых потребностей, которые будут расположены в решении, но я хочу сгладить файловую структуру. (И удалите некоторые устаревшие проекты.) В основном, я не осуществляю рефакторинг, я просто моюсь. VS2008, кажется, не имеет такую опцию, хотя...
8
задан Wim ten Brink 19 July 2010 в 13:21
поделиться

5 ответов

Я использовал следующее решение для решения моей проблемы:

  1. Я начал с нового, пустого решения в новой папке.
  2. Для каждого проекта, который нужно было переместить, я использовал проводник Windows для создания дочерней папки в папке решения, на этот раз с собственным именем.
  3. Я скопировал проекты из их исходного местоположения в новые папки.
  4. Я добавил все (перемещенные) существующие проекты с их новых мест.
  5. В диспетчере решений я переименовал проекты в более подходящие названия.
  6. Я исправил свойства проекта и другие настройки для всех проектов.

Это действительно хорошо очистило весь проект. Затем я добавил весь проект в Vault (система контроля версий), и как только он оказался в VSS, я снова удалил папку (фактически, просто сначала переименовал ее) и получил ее обратно из системы VSS, чтобы все устаревшие двоичные файлы и другой мусор были тоже ушел. Работы было много, но результат оказался именно тем, что нужно.

0
ответ дан 5 December 2019 в 18:55
поделиться

I не думаю, что здесь есть простой ответ. Ваша основная проблема будет заключаться в том, что Visual Studio (или .NET) все равно, есть ли у вас классы, принадлежащие другому корневому пространству имен, находящемуся в проекте.

Итак, если у вас есть проект под названием Project.BusinessObjects и другой проект под названием Project.DataObjects, ничто не мешает вам поместить класс под названием Project.BusinessObjects.User в проект Project.DataObjects.

Я не знаю, как сделать все это без большого количества ручной работы. Resharper немного поможет, если вы используете функцию «переименования пространства имен», но вам все равно придется много работать.

1
ответ дан 5 December 2019 в 18:55
поделиться

Я не думаю, что есть какой-либо способ сделать это из Visual Studio, и, как указывает @gmagana, это будет очень сложно сделать, если файлы находятся под контролем версий.

Однако это можно сделать вручную.

Начните с создания новой желаемой структуры папок - пока игнорируйте файлы .csproj и файлы решений, а также интересующие вас файлы .cs в новой структуре.

Теперь запустите Visual Studio и создайте новый пустой проект. Если у вас есть проекты разных типов, вы можете создать по одному новому пустому проекту для каждого типа. В результате у вас останется пустой файл .csproj и файл .sln только с одним проектом.

Скопируйте пустой файл проекта туда, где они нужны, и при необходимости переименуйте их. Вы можете отредактировать их и изменить имя сборки и пространство имен по умолчанию, если хотите, или дождитесь завершения и измените настройки с помощью Visual Studio.

Наконец, отредактируйте файл .sln и удалите раздел Project. Скопируйте пустой файл .sln в нужное место и откройте его в Visual Studio. Теперь идите и добавьте каждый из ваших существующих проектов в новое решение.

В каждом проекте нажмите кнопку «показать все» и начните включать все файлы, которые вы скопировали, в структуру проекта. Устраните отсутствующие зависимости, измените пространства имен и имена сборок для проекта и убедитесь, что в файлах кода не указано пространство имен, которое вам не нужно. Повторяйте до тех пор, пока не будете готовы.

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

Удачи.

1
ответ дан 5 December 2019 в 18:55
поделиться

Также, будьте ОЧЕНЬ осторожны, делая это в сочетании с системами контроля версий. Вы должны очень хорошо знать свою систему контроля версий, чтобы понять, как она отреагирует на такой серьезный рефакторинг.

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

Я бы сделал резервную копию, а затем занялся рефакторингом. Я думаю, что это ошибка - думать, что вы можете сделать все, что вам нужно, из IDE. И если вы сделаете то, что описали в IDE, в системе контроля исходников, использующей старый Visual SourceSafe API, вы наверняка (гарантированно) испортите свои привязки, этот API просто не создан для перемещения (или переименования, если на то пошло) файлов таким образом, как вы описали. Лучший способ сделать это по такому сценарию - удалить все привязки контроля исходных текстов, а затем снова добавить реорганизованное решение.

Это не так сложно, вам просто нужно подготовиться (сделать резервную копию) и экспериментировать, пока не получится.

1
ответ дан 5 December 2019 в 18:55
поделиться

Запустите notepad.exe и откройте файл .sln. И запустите проводник Windows, перейдите в каталог решения. Обратите внимание, как содержимое файла .sln соответствует структуре решения. Отредактируйте записи, сделайте соответствующие изменения с помощью проводника. Сначала сделайте резервную копию.

6
ответ дан 5 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: