What directory/solution/project structure do you find to be the most manageable and convenient for medium to large projects written in C#? By "medium to large" I mean projects which include a diverse set of Visual Studio C# project types in a hierarchical structure with nested namespaces.1
I'm primarily interested in those project types found in the 'Windows' section in Visual Studio 2008: Windows Forms, WPF, Custom Controls for both and Class Libraries. Additionally, I'm using MSBuild (via Visual Studio) to build my project.
I've never found the default structure automatically generated by Visual Studio to be worth using. This structure has one folder solely for containing the solution and a nested folder for each project. I'm wondering if this is because of the scale of project I've used C# for in the past (small to medium). What benefits does this structure have for larger projects? Have you found it useful?
I'm also interested in things like folder names and their relation to namespaces.
The following are my personal goals for project structure.
Goals
- Each project should be reasonably self-contained. That is, I'd prefer to be able to check each one out individually and compile it (where permitted by dependencies).
- Navigating the structure should be easy.
- Directory structures should map to namespaces in a clear and straightforward way.
- Identifying solution files should be easy.
Projects should build with little or no extra effort in Visual Studio (MSBuild) at most or all levels of the heirarchy
- Please note that my use of the word 'projects' here means 'development efforts' except where explicitly noted.