Do you have a consistent .NET solution structure?
Last updated by Brady Stroud [SSW] 8 months ago.See historyWhen developing software, we implement a dependency injection centric architecture.
Dependencies and the application core are clearly separated as per the Onion Architecture.
In the above example you can clearly see:
- The different layers of the Onion Architecture - see Layers of the Onion Architecture
- Unit test and integration test projects - see Rules to Better Unit Tests
- The Documentation solution folder - see Do you review the documentation?
- The References solution folder - to hold any 3rd party assemblies that are not available via NuGet
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