I think it really depends how much code is shared between the three versions and if the applications have been designed from the ground-up with this separation in mind.
If the applications were not designed from the ground-up with this separation in mind then conditional compilation, and use of the Conditional attribute may be the easiest option until the applications are refactored to ease the division.
Solution one you mention is the most common except there would often be a fourth project (Common) which contains classes shared between the three.
Regards,
William Bartholomew |