Как лучше всего изменить структуру каталогов (SLN и проектов) в проекте C # - PullRequest
3 голосов
/ 28 июня 2010

Я работаю над проектом на c #, в последнее время мы решили реструктурировать структуру каталогов исходного кода. Я занимаюсь реструктуризацией и хотел задать вам несколько вопросов о том, как лучше всего провести изменения. Реструктуризация в основном меняет текущие каталоги всех проектов на более структурированный и логичный порядок.

Текущая структура (это схема):

  • Основной каталог:

    • Project
    • Проект
    • Dir
      • Проект
      • Проект
      • Проект
    • Dir
      • Проект
      • Проект
      • Проект
    • Project Dir + файл решения
    • Project Dir + файл решения
    • Dir
      • Файл решения.
      • Проект
      • Проект
    • Project Dir Etc ..

Целевая схема: Проект TFS: Главный - Источник - Дир - Файл решения. - Проект - Проект - Проект - Проект

     - Dir
        - Dir
            - Project
            - Project
            - Project
        - Dir
            - Solution file.
      - Dir

        - Project
        - Project

Изменено относительное местоположение между проектами, а также относительные местоположения в решениях.

Вопрос в том, как сделать изменения наилучшим образом: - Как исправить все ссылки на каждый проект? - Как исправить все решения? - Есть ли какой-нибудь инструмент для этого?

Ответы [ 2 ]

3 голосов
/ 11 июля 2010

При использовании варианта 2:

Переместите файлы, не относящиеся к csproj / sln, в их целевые местоположения, убедитесь, что вы понимаете относительные изменения в ваших путях.пара дополнений:

  1. Я бы сделал так, чтобы скрипт также выполнял необходимые файловые операции.Конечно, сначала сделайте резервную копию вашего исходного решения.
  2. .sln файлы не XML.Это текстовые файлы с довольно простым синтаксисом.Таким образом, либо вам придется написать свой собственный анализатор, либо рассмотреть возможность использования объекта автоматизации Visual Studio DTE для управления содержимым файла решения, как показано в этой теме: Простой способ добавить несколько существующих .csproj в Visual StudioРешение .Пример написан на PowerShell, но подход будет таким же, скажем, в VBScript.
1 голос
/ 28 июня 2010

Мне неизвестны какие-либо инструменты, которые существуют для автоматического выполнения этого, но я знаю о двух вариантах, которые у вас есть, вариант 1 - использовать VS для выполнения рефакторинга (длиннее), или вариант 2 - использовать нечто вроде powershell (или ваш любимый язык сценариев) для обновления ссылок на sln и csproj.

Если вы используете вариант 1:

  1. Создайте новые каталоги с помощью VS и вручную переместите в них файлы
  2. Перемещайте файлы SLN вручную (ссылки внутри файлов являются относительными), ссылки на подпапки останутся без изменений.

При использовании варианта 2:

  1. Переместите файлы, не относящиеся к csproj / sln, в их целевые местоположения, убедитесь, что вы понимаете относительные изменения в ваших путях.
  2. Создайте сценарий, который может обрабатывать файлы XML (для файлов proj вам потребуется регулярный анализ текста для файлов SLN), и откройте файлы. Перенацелите каждый узел «item», указав в нем путь (будет .. \, или file.etx), к пересчитанному целевому местоположению.

К сожалению, это будет довольно ручное руководство и довольно подвержено ошибкам. Я рекомендую вариант № 1, и только что закончил делать это в проекте с 100+ csproj и 30 sln файлами. Было около 4000 исходных файлов, которые я переместил вручную, а затем использовал для поиска find replace в vs studio (с выгруженным проектом).

Удачи.

...