Structuring Visual Studio solutions
The entire solution will be under a root folder, that may differ depending on the developer’s preferences, the branch they’re checking out etc.
Branch structure
| Folder Name | Function | Comments |
|---|---|---|
| Main | Trunk / main branch | |
| Branches | ||
| BranchesDevelopment | Contains development branches | |
| BranchesReleases | Contains live, maintenance branches | |
| General | Non branch-specific resources | E.g. Build server configuration, general documentation etc |
Solution structure
| Folder Name | Function | Comments |
|---|---|---|
| Bin | Build drop location | Drop location for binaries, making it easy to get to, and easy to reference from projects in separate solutions. |
| Code | Contains all projects | Groups the code together instead of cluttering the root folder. |
| Commons | Contains shared project resources and non code | Contains things such as build scripts, documentation, shared include files, strong name key, versioning scripts etc. |
| CommonsLibraries | Flat directory of binary libraries | Contains managed and native assemblies referenced by any of the projects. Flat structure so that it’s easy to add references for, and use as a Reference Path. |
| TestsUnitTests | Contains Unit Test projects | Tests that can and should be run regularly when developing, and added to increasingly through approaches such as TDD. |
| TestsIntegrationTests | Integration tests | Integration tests that may require environment setup or more time, and won’t be run regularly during coding sessions, most regularly by continuous integration server. |
| TestsHarnesses | Test Harnesses | Test harnesses to be used manually to test functions. |
|
|
Solution File | The solution file exists in the root, where it’s easily accessible and can reach any and all contained folders and files. |