You must use Layers to have common code in separate places and refer the same every time whenever needed. We must
follow DRY (Do Not Repeat Yourself) principal as described here:
http://en.wikipedia.org/wiki/Don't_repeat_yourself
In your case they asked to keep different copies, just because UI is different for those. In this case we
may have layers like below:
UI (User Interface) Layer: 4 WinForm Projects for Common UI Controls , Specific UI 1, Specific UI 2, Specific UI 3. All specific projects will have reference of common UI and BL Layer.
Business Logic Layer: Class Library Project: Having all business domain classes.
Data Access Layer: Class Library Project: Having all classes related to data access.
You can have service layer also if needed,
above is just general suggestion as I am not aware about exact scenario, so
visit below links and take a informed decision:
http://fewagainstmany.com/blog/introduction-to-layered-architecture-part-one
http://en.wikipedia.org/wiki/Software_architecture
http://shareimppoints.wordpress.com/2013/03/05/what-is-3-tiermulti-tier-architecture-and-why-do-you-need-it/[
^]
In case of any further query, you are most welcome.