The basicsFirst of all you divide the solution in different projects, corresponding to the layers, modules, or components, defined in the design. Sometimes beginners tend to stack everything into one solution and then modularize the code by means of folders within the project, well, this is not the way to go.
The .net platform comes with the notion of projects, one solution has many projects, and projects can be of different types. For example Class Library Projects can be referenced by other projects, allowing modularization, encapsulation and reuse of code and functionality. Projects generate .exe, or .dll files, which are units of deployment, security and reuse.
Going one step furtherOnce you start dividing everything into a different project, the next thing that happens is, if the solution is big enough, that you start scrolling up and down to navigate a sea of projects, when you usually work with a couple of them at a time.
Visual Studio 2005 comes with this very useful feature which is to be able to add folders to one solution, grouping Projects and even folders in your own logical hierarchy. It's a simplification and an evolution of the former VS2k3 Enterprise Template concept. It's pretty handy.
Now you can group projects following some criteria.
Define a good hierarchyWhat is a good criteria to group projects? I'd say one that is intuitive enough for someone else to understand without asking too many questions, and that helps you do your job.
This point is particulary important when you need to standarize the way different groups work in a software factory.
You may be familiar with the following diagram, from the Microsoft's PAG group, from the "Designing Applications and Services"'s article.
I always liked this article, eventhough some say it's a bit outdated now, but it's good foundation and guidance.
Based on this article's guidelines about what are the layers and players in a three layered information system, you can choose to structure the solution aligned with it.
Besides that is good to separate the different concerns in the solution in with different folders, like: setup, testing, database..
The result of all that may look something like this: