Как настроить дерево разработки .NET?

Как настроить дерево разработки .NET? Я использую такую ​​структуру:

-projectname
--config (where I put the configuration files)
--doc    (where I put all the document concerning the project: e-mails, documentation)
--tools  (all the tools I use: Nunit, Moq)
--lib    (all the libraries used by the solution: ninject or autofac)
--src
---app   (sourcefiles)
---test  (unittests)
solutionfile.sln
build.csproj

Знак «-» обозначает справочники.

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

Есть мысли по этому поводу?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
0
1 894
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

Мы используем очень похожий макет, описанный в сообщении блога JP Boodhoo под названием Структура каталогов для проектов.

Эта ссылка находится за какой-то стеной регистрации.

Scott Whitlock 07.08.2009 04:56

Спасибо, что сообщили мне - блог был перемещен - теперь он должен работать.

BigJump 16.08.2009 12:55

На моем рабочем месте у нас есть несколько проектов, каждый из которых получает свой подкаталог, например: -proj1
--proj1.csproj
-proj2
--proj2.csproj
-proj3
--proj3.csproj
solutionfile.sln

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

Если я правильно понимаю вашу структуру, я думаю, у вас будет много дубликатов в вашем дереве разработки, связанных с «tools» и «lib». Скорее всего, это внешние инструменты и библиотеки, которые могут использоваться разными проектами.

Что-то, что нам хорошо подходит:
. solutionfile.sln
-src
--projectname
---config
---doc
---source files (structure representing namespaces)
-test
--testprojectname (usually, a test project per source project)
---unit test files (structure mirroing the structure in the source project)
-lib
--libraryname (containing the libraries)
-tools

У меня нет инструментов в рамках проекта. Инструменты находятся в общей сетевой папке. Да, в наши дни дисковое пространство дешево, но ... давай :)

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

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

Инструменты могут иметь разные версии. Если ваши старые проекты зависят от версии 1 инструмента, и вы решили обновить его до версии 2, вам необходимо обновить все старые проекты для поддержки версии 2 инструмента. Проверка всего в системе контроля версий делает жизнь немного проще. :-)

Fossmo 16.09.2008 19:36

Полностью согласен с Фоссмо. Изначально мне не нравилась идея дублировать двоичные файлы инструментов в каждом проекте, который я создаю. Но это уменьшает количество проблем, которые могут возникнуть в подобных ситуациях, а стоимость диска действительно очень минимальна.

Nathan Palmer 05.09.2009 22:56

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

hollystyles 06.09.2009 22:01

Мы используем такую ​​структуру:

  • CompanyNameOrCoreProjectName
    • Ответвляться
      • BranchName
        • CopyOfTrunk
    • Хобот
      • Рабочий стол
      • Ссылки
      • Общий
      • Решения
      • Тест
      • Сети

Затем просто убедитесь, что все файлы проекта / решения используют только относительные пути и ветвление работает нормально. Desktop / Webs предназначены для проектов соответствующих типов, Test - для любых проектов модульных тестов, в папке Solutions есть папка для каждого решения, в которой находится только файл решения. ReferencedAssemblies содержит все сборки, которые мы не включаем в решение (иногда это локальные проекты, которые мы просто не хотим строить каждый раз, когда мы создаем решение, или сторонние сборки, такие как rhinomocks или log4net, и т. д. Shared для любые базовые библиотеки (доступ к данным, бизнес-логика и т. д.), которые используются в нескольких решениях.

ДеревоХирург - это инструмент, который настроит для вас дерево каталогов со всеми необходимыми зависимостями и скелетным файлом nant. По этой ссылке вы также можете найти серию сообщений в блоге его первоначального создателя Майка Робертса, в которых объясняются некоторые преднамеренные выборы, лежащие в основе структуры, которую дает вам TreeSurgeon, например почему нормально иметь дублирование между библиотекой и инструментами, почему важно иметь все зависимости и т. д.

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

Мы также используем TreeSurgeon и очень им довольны. Наша структура выглядит так:

Ответвляться

  • строить
  • lib
  • src
    • < различные каталоги src для приложений, тестов, миграции баз данных и т. д.)
  • инструменты

Хобот

  • То же, что и выше

Другие вопросы по теме