Do you have a consistent .NET solution structure?

Last updated by Brady Stroud [SSW] about 1 month ago.See history

When developing software, we implement a dependency injection centric architecture.

dependency injection structure
Figure: A Dependency Injection based architecture gives us great maintainability

solution structure 1710232021934
Figure: Good Example - The Solution and Projects are named consistently and the Solution Folders organize the projects so that they follow the Onion Architecture

Dependencies and the application core are clearly separated as per the Onion Architecture.

In the above example you can clearly see:

Common Library projects are named [Company].[AssemblyName].
E.g. BCE.Logging is a shared project between all solutions at company BCE.

Other projects are named [Company].[Solution Name].[AssemblyName].
E.g. BCE.Sparrow.Business is the Business layer assembly for company ‘BCE’, solution ‘Sparrow’.

We have separated the unit tests, one for each project, for several reasons:

  • It provides a clear separation of concerns and allows each component to be individually tested
  • The different libraries can be used on other projects with confidence as there are a set of tests around them
Adam Cogan
Adam Stephensen
We open source. Powered by GitHub