Step by step...
The only solution is to start allocating blocks of code. If you don't have too many implementation leaks (see below **), then start building fachades that isolate classes behind. Move these classes to another project and make fachade load the dll at startup and redirect calls to factory methods.
Focus on finding areas / libraries that are fairly stable and sharing them into isolated DLLs. Building and managing versions separately will help you avoid integration pains.
I have been in this situation in the past, and the only way is to take the task with patience.
By the way, a good side effect of the separation code is that the interfaces are cleaner and the size of the output dlls is smaller !!. In our project, the suffix / reorganization of the code around and the reduction in the number of gratuitous ones includes a 30% reduction in the final productivity.
Good luck
** โ user call obj-> GetMemberZ () โ GetMemberYT-> GiveMeTheData (param1, param2)
source share