When promoting from dev to test my client requires that I copy the exact installer that was used in dev to test. I can not recompile the application for change control purposes.
My solution contains a number of projects including a Windows service and a data access class library. The Windows service project references the data access project.
The data access project contains an settings file with information required to connect to a web service.
I'd like to build this solution and only have to modify the settings files when moving from dev to test (and eventually to prod).
However, when I compile the Windows service, the data access project's config file is built into its dll. This causes a problem when I want to promote from one environment to the next. I can't change the web service connection information for the data access project to point to a test data source instead of the dev data source.
I've seen articles that recommend creating different build configuration settings for each environment. That obviously doesn't work within my client's requirements of just copying the installers from on environment to the next.
I've also seen articles that recommend putting all settings in one app.config file and linking that one file amongst all projects. If I did that... when I make changes to the app.config of the service, the dll is still going to have it's linked copy of config file baked in. Won't it ignore the changes that I make to the service's linked copy of the config file?
How can I change the configuration settings of a class library without recompiling?