Our product consists of a solution with a large number of projects.
Each project is a different component of the system, with some libraries playing the role of a service API
and some libraries playing the role of external utilities.
With the evolution of the product and its deployment for a large number of customers,
it was necessary to implement specific requirements in the product according to each customer.
Thus, we have reached a point where our product contains individual lines of code for customers,
while we are interested in keeping the code common to all customers and that individual code for each customer will be taking out to a separated library.
For example, let’s say we have a project called myproj.utils.
This is the base project from which any customers specific projects will extend.
Customers projects will need to inherit all myproj.utils classes.
This project is in use by a large number of services.
For example, let's say we have a customer named CNN.
Inside the myproj.utils project there is a lot of code that belongs to CNN and we want to get it out.
As a first step, we extracted customer specific code into partial classes and it works fine but we want
to get the code completely out of the project so we actually have 2 projects:
myproj.utils and myproj.utils.CNN and that these two projects be partial, just as partial classes are performed.
To sum-up, we want the final customer utils library to be a single DLL built from both myproj.utils and myproj.utils.CNN libraries content.
Is there a way to do this in Visual Studio in such a way that we can connect additional partial projects to the base project?
What I have tried:
We thought about:
1.Performing it using multifile assemblies
2.Using pre-build events (copying customer source files to the main myproj.utils and build it all together)
3.Creating dedicated customer project with reference to main myproj.utils source files (but this is not the desired outcome)