Как настроить дерево разработки .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 или установки каких-либо сторонних библиотек.

Любые мысли об этом?

Ответы

Ответ 3

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

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

Ответ 4

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

  •  
  • CompanyNameOrCoreProjectName     
    •        
    • Отделение           
      •              
      • BranchName                 
        •                    
        • CopyOfTrunk                
                               
                    
    • Магистральные           
      •              
      • Desktop             
      • ReferencedAssemblies             
      • Общие             
      • Решения             
      • Тест             
      • Полотна          
                 
     

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

Ответ 5

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

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

Ответ 6

Если я правильно понимаю вашу структуру, я думаю, что у вас будет много дубликатов в дереве dev, связанных с "инструментами" и "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

Ответ 7

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

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

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

Ответ 8

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

Branch

  • построить
  • Lib
  • ЦСИ
    • < различные каталоги src для приложений, тесты, db-миграции и т.д.).
  • Инструменты

Магистральные

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