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 |
|
|
| Branches\Development |
Contains development branches |
|
| Branches\Releases |
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. |
| Commons\Libraries |
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. |
| Tests\UnitTests |
Contains Unit Test projects |
Tests that can and should be run regularly when developing, and added to increasingly through approaches such as TDD. |
| Tests\IntegrationTests |
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. |
| Tests\Harnesses |
Test Harnesses |
Test harnesses to be used manually to test functions. |
| <Solution>.sln |
Solution File |
The solution file exists in the root, where it’s easily accessible and can reach any and all contained folders and files. |