0 2.4K ru

Правильная структура .NET приложения

Categories: 💻 Programming

В данной статье мы рассмотрим структуру .NET приложения

Структура папки проекта:

{solution}.sln
.gitignore
.gitattributes
LICENSE
README.md
artifacts/
build/
docs/
lib/
packages/
samples/
src/
  /BLL
  /DAL
  /UI
tests/ 

Описание:

Folder Description
src Папка основными проектами
BLL Подпапка Business Logic Layer. В ней мы размещаем основные проекты бизнес логики
DAL Подпапка Data Access Layer. В нее мы разместим проекты связанные с базами данных. 
UI Подпапка user interface. В нее мы разместим Web проекты
tests Папка для Unit + Integration тестов
docs Папка для документации
lib Папка в которую мы добавляем external библиотеки которые не представлены в nuget'e
packages Nuget packages folder

Структура .gitignore файла для .NET проекта

# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/
[Oo]bj/

# mstest test results
TestResults

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates
.vs/
# Build results
[Dd]ebug/
[Rr]elease/
x64/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.log
*.vspscc
*.vssscc
.builds

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder 
[Ee]xpress

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish

# Publish Web Output
*.Publish.xml

# NuGet Packages Directory
packages

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
[Bb]in
[Oo]bj
sql
TestResults
[Tt]est[Rr]esult*
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

Итог:

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

Comments:

Please log in to be able add comments.