Basically, you will allocate classes in different libraries if you want to provide your product in the way you can choose which end user will not have access to all the classes of the project.
Think in a client server application. Why do you want to distribute server classes for your client if you have a cloud computing scenario? You prefer to distribute presentation and service client classes packaged in server-independent assemblies. This is a good safety practice.
Another good point to separate in assemblies is to avoid loading a large assembly into the application domain (AppDomain). For example, if using your program does not require overtime processing of images, but it may require rendering classes for one operation per day, you reduce the processing time - when loading a large assembly into the application domain - and in memory because your application does not require assembly, which has it all, and, after all, your application has less memory usage.
, , , , , , , - .
, , , , , .