Currently we have about 20 solutions. The majority of these have multiple projects, including share utils projects, data access, etc. We've had a few problems where a contractor changed something in a common project and unknowingly this breaks a number of other solutions. We currently have 7 perm developers and 3 long term contractors, soon to be increasing to around 10.
We're currently trying to decide a new software architecture in our company. Currently we're trying to decide whether we should combine our solutions into a single super solution, or have lots of smaller solutions with some common bits as one solution and a common.dll, etc (my preference).
As I see it the pro's and con's are as follows:
One solution means that if a common project is broken it won't compile, so you won't accidentally break another project.
Would increase the possibility of code reuse, possibly decreasing development time.
Some application have a massive overlap, take different web apps in an intranet for example.
Possible added complexity of deployment.
If one application (A) is changed, the changed bit may be tested. If something was changed that effected another application (B) but this wasn't deployed, next time (B) is changed and deployed the previous changes would be pushed out and this could be in an area that wasn't going to be extensively tested.
The solution would be huge, possibly making it more complex and harder to maintain, especially if it was a fairly stand alone simple application.
Simple applications will have simple solutions that should be very easy to maintain.
If common area's are referenced DLL's there is less chance that a change will break another application.
Discourages code reuse.
If common area's are added as projects it will make it difficult to know if a change has broken another application.
If common area's are DLL's, changing these would be another step.
Some applications 'belong' together in one solution, how to determine which should be grouped and which shouldn't be?
Can I ask what other people here do?
Should the common area's be added as projects or as DLL's?
Anything else to consider?