I would say that the projects should be divided logically into reusable
units, not too big, not too small. Most times, most of your projects are
built into a class library, which is a .dll that someone else can use in
their project, or know is in the GAC, etc. You want to structure them
logically, whatever makes the most sense. Most often you'll have a security
library (project/dll), data access library, etc., as these are components
most other projects need, and is the logical unit they'd borrow at.
Then all you have left are the actual projects that are ...