I am looking to redirect the standard .Net ConfigurationManager class to another file; entirely. The path is determined at runtime so I can’t use configSource or such (this is not a duplicate question – I have looked at the others).
I am essentially trying to duplicate what ASP.Net is doing behind the covers. Thus not only my classes should read from the new config file, but also any standard .Net stuff (the one I am specifically trying to get to work is the system.codeDom element).
I have cracked open Reflector and started looking at how ASP.Net does it – it’s pretty hairy and completely undocumented. I was hoping someone else has reverse-engineered the process. Not necessarily looking for a complete solution (would be nice) but merely documentation.
I finally figured it out. There is a public documented means to do this – but it’s hidden away in the depths of the .Net framework. Changing your own config file requires reflection (to do no more than refresh the ConfigurationManager); but it is possible to alter the configuration file of an AppDomain that you create via public APIs.
No thanks to the Microsoft Connect feature I submitted, here is the code:
Output: