3.20. Using Multiple Entry Points toVersion an Application

Problem

Some companies reuse the same duplicated, but slightly modified, application, with each version built especially for a particular client or group of clients. Bug fixes, testing, adding, and modifying code in each of these code bases can get very confusing as the number of duplicated applications grows. You need a way of managing this increasing complexity.

Solution

Instead of copying the entire application to a different area, modifying the duplicated code, and creating a special build script for it, you could compile the same application (with all modifications included, of course) and use a different entry point based on the client. To do this, add a new class with a new Main entry point method, one for each client or group of clients:

public class ClientABC
{
    public static void Main( )
    {
        //Startup/Initialization code for client ABC
    }
}

public class ClientXYZ
{
    public static void Main( )
    {
        //Startup/Initialization code for client XYZ
    }
}

The build scripts can be modified to build the same application using a different entry point that matches up to one or more clients:

csc /out:AppABC.exe *.cs /main:ClientABC 
csc /out:AppXYZ.exe *.cs /main:ClientXYZ

Discussion

It is very difficult to work with several slightly different copies of the same application. If a bug is found and fixed in one application, it must be fixed in all of the copies as well. This can be a time-consuming and arduous task. To make things easier on ...

Get C# Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.