In my every-day work solution we have 80 projects circa. This solution contains 4 different web-sites, the business logic and the infrastructure assemblies (such as extension methods, various utilities, repository base classes and so on).
The solution works quite good but if we add the test projects to the solution we easily pass over 100 projects which makes working with this solution very tedious.
In my search for a solution, I got really interested by Nuget and I started wondering if it can help us.
The idea would be to split the huge solution into smaller atomic pieces whose output would be a Nuget package to be uploaded to a private Nuget repository.
The web-sites will be referencing the packages other than a class-library bound to that specific web-site.
From the CI point of view:
Each package solution should be atomic.
- It should be able to fetch its references (other NuGet packages, both from the official feed and the private one);
- Build
- Run its tests
- Assemble a package
- Upload the new package to the repository
The product solutions (say the web-sites) should be build after:
- A commit of their code
- An update of the NuGet packages on the private repository
Any suggestion? Or maybe a better way to achieve the split of this huge solution?