title: Structuring files in a .NET project
body: <p>In a MVC application you get a predefined project skeleton with directories for Models, Views and Controllers.
  When creating a class library or a console application however you get no such project skeleton.</p>
  
  <p>As a project grows a lot of files eventually accumulate in the project's root directory. Hence a desire to somehow group the files may arise.</p>
  
  <p>In projects with co-workers, I've come across files grouped into directories named Interfaces, Enums and Extensions. In line with this thinking perhaps directories for filters, attributes and abstract classes could also be used. I guess this could be called "language construct based grouping" and while any consistent grouping arguably may be better than none I believe this type of grouping strategy might not be the most suitable one.</p>
  
  <p>Looking at Microsoft source code on GitHub I see that interfaces and their implementations tend to reside in the same directory and that while grouping of files exists, it is not done based on the language construct. I find it difficult to exactly pinpoint what the grouping strategy is.</p>
  
  <p>I realize that there might not be any crystal clear answer since what needs to be grouped may be specific to the particular project at hand.
  However, I am looking for helpful advice and guiding principles on how to figure out <em>what</em> should be grouped and <em>how</em> it should be grouped.</p>