Как вы настраиваете свое дерево разработки .NET?[закрыто]
-
09-06-2019 - |
Вопрос
Как вы настраиваете свое дерево разработки .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 и не устанавливая никаких сторонних библиотек.
Есть какие-нибудь мысли по этому поводу?
Решение
Мы используем очень похожий макет, описанный в сообщении в блоге JP Boodhoo под названием Структура каталогов для проектов.
Другие советы
Ознакомьтесь с этими другими вопросами StackOverflow...
Древесный хирург это инструмент, который настроит для вас дерево каталогов со всеми необходимыми зависимостями и скелетным файлом nant.По этой ссылке вы также можете найти серию сообщений в блоге его первоначального создателя Майка Робертса, объясняющих некоторые преднамеренные решения, лежащие в основе структуры, которую предлагает вам TreeSurgeon, напримерпочему нормально дублировать библиотеку и инструменты, почему важно, чтобы присутствовали все зависимости и т.д.
Я давно им не пользовался, поэтому не могу вспомнить, согласен ли я по-прежнему со всеми вариантами, которые он делает, но я не думаю, что вы можете сильно ошибиться в нем.
Мы используем структуру, подобную этой:
- Название компании или название проекта
- Филиал
- Имя ветви
- CopyOfTrunk ( Копия транка )
- Имя ветви
- Багажник
- Для рабочего стола
- Ссылочные сборки
- Общий доступ
- Решения
- Тест
- Паутины
- Филиал
Затем просто убедитесь, что все файлы проекта / решения используют только относительные пути и ветвление работает хорошо.Desktop / Webs предназначены для проектов соответствующих типов, Test - для любых проектов модульного тестирования, в папке Solutions есть папка для каждого решения, в которой находится только файл решения.ReferencedAssemblies содержит все сборки, которые мы не включаем в решение (иногда это локальные проекты, которые мы просто не хотим создавать каждый раз при сборке решения, или сборки сторонних разработчиков, таких как rhinomocks или log4net и т.д.Shared предназначен для любой из основных библиотек (доступ к данным, бизнес-логика и т.д.), которые используются в нескольких решениях.
На моем месте работы у нас есть несколько проектов, где каждый проект получает свой собственный подкаталог, вот так:-проект1
--проект 1.csproj
-проект2
--проект 2.csproj
-проект3
--проект 3.csproj
файл решения.sln
Остальная часть вашей настройки выглядит нормально, но я думаю, вам следует выяснить, как вы могли бы объединить несколько проектов, например, библиотеку с общим исходным кодом между несколькими решениями.
Если я правильно понимаю вашу структуру, я думаю, что у вас будет много дубликатов в вашем дереве разработки, связанных с "инструментами" и "библиотекой".Скорее всего, это внешние инструменты и библиотеки, которые могут быть общими для разных проектов.
Что-то, что хорошо работает для нас, это:
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
У меня нет инструментов в рамках проекта.Инструменты находятся в общей сетевой папке.Да, в наши дни дисковое пространство стоит дешево, но...давай же :)
Также у меня есть папка скрипта базы данных под projectname (когда это приложение, управляемое данными).
Конечно, не так важно, как вы настроены, важен тот факт, что логически организованный стандарт используется в соответствии с проектом и соблюдается с хорошей дисциплиной.Это полезно независимо от того, работаете ли вы в одиночку или в команде.
Мы также используем TreeSurgeon и вполне довольны им.Наша структура выглядит следующим образом:
Филиал
- строить
- библиотека
- Src
- < различные каталоги src для приложений, тестов, миграции БД и т.д.)
- Инструменты
Багажник
- То же, что и выше