Соглашение об именах для решений и проектов Visual Studio - PullRequest
33 голосов
/ 15 июня 2009

Мы думали об организации нашего БОЛЬШОГО проекта следующим образом:

\trunk
  [CompanyName]
    [Product1]
        [Project1]
          CompanyName.Product1.Project1.csproj
        [Project2]
          CompanyName.Product1.Project2.csproj
        CompanyName.Product1.sln
    [Product2]

Мы пытались следовать рекомендации Microsoft о том, чтобы имена пространств имен соответствовали структуре папок, но есть ли какие-либо недостатки для такой настройки? Какое соглашение о присвоении имен для решений и проектов, которые вы применяете?

Ответы [ 6 ]

11 голосов
/ 15 июня 2009

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

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

4 голосов
/ 15 августа 2009

Альтернативой, которую я использовал, является размещение всех файлов решений в одном каталоге.

\trunk
  [CompanyName]
    CompanyName.Product1.sln
    CompanyName.Product2.sln
    [Product1]
        [Project1]
          CompanyName.Product1.Project1.csproj
        [Project2]
          CompanyName.Product1.Project2.csproj
    [Product2]
        [Project3]
          CompanyName.Product2.Project3.csproj
3 голосов
/ 15 июня 2009

Что касается имен файлов - я предпочитаю, чтобы имя файла моего проекта совпадало с именем выходной сборки, потому что это намного облегчает узнать, что и что производит. Создание списка каталогов намного быстрее, чем поиск файлов csproj в дереве для того, который производит сборку, которая мне нужна.

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

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

Не забывайте о важности стратегий ветвления управления версиями в вашем общем проекте. Границы Компании и Продукта могут быть филиалами и, следовательно, не обязательно должны быть представлены в виде каталогов на диске.

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

2 голосов
/ 15 июня 2009

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

1 голос
/ 15 июня 2009

Хорошо выглядит для меня.

Следует отметить, что по умолчанию пространством имен по умолчанию в проекте Visual Studio является просто имя проекта. Конечно, это означает, что называть ваши проекты как ваши пространства имен - это «путь Visual Studio».

Решения наиболее естественно названы в честь продукта / проекта. Как вы указываете.

0 голосов
/ 17 апреля 2019

Я считаю, что это лучше

\trunk
  [CompanyName]
    [Product1]
      CompanyName.Product1.sln
      [Main] --Optional
        CompanyName.Product1.csproj
      [Project1]
        CompanyName.Product1.Project1.csproj
      [Project2]
        CompanyName.Product1.Project2.csproj
    [Product2]
      CompanyName.Product2.sln
      [Main] --Optional
        CompanyName.Product2.csproj
      [Project1]
        CompanyName.Product2.Project3.csproj
      [Project2]
        CompanyName.Product2.Project2.csproj
      [Project3]
        CompanyName.Product2.Project2.csproj

Почему? Потому что, когда вы получаете код из репозитория, вы получаете, например, каталог «Product1», он содержит все, что вам нужно для работы. Каталог [Main] содержит базовое пространство имен по умолчанию, обычно это exe или основной проект. Это необязательно.

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