We build a highly configurable .Net Client/Server application.
(Client is C#/WPF, Server is C#/WebService)
There is a single code base, but each customer has its own 'profile'.
The profile contains:
- Database/Connection string
- XML configuration of many aspects of the application
- Mail Settings (SMTP/POP3/IMAP)
- other application settings
I am aware that the .Net way to do this is the App.config/Web.config/*.exe.config file, which means we need a collection of different *.config files, basically one for each customer.
The 'profile' will be used by various sections of the company and various pieces of the software:
- Development/Bug fixing (Visual Studio, Raw Database Viewer, Helper Applications)
- Create/Edit XML Configuration (Editor for XML Configuration)
- Testing (.exe only)
- Support (.exe only)
We need a good (simple/straightforward/understandable/maintainable) approach to switch profiles for all sections of the company.
But this works around the build process inside Visual Studio. Most sections of the company do not use Visual Studio.