Все вышеперечисленное работает хорошо, если вам нужно заменить только раздел AppSettings.
В случае, если вам нужно работать с разными конфигурационными файлами (все разделы), вы можете рассмотреть возможность запуска приложения с использованием хоста, который создает домен приложения для вашего основного приложения и устанавливает разные конфигурационные файлы в зависимости от параметров, которые вы передали. *
Вот код, который работал для меня:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = "file://" + System.Environment.CurrentDirectory;
setup.DisallowBindingRedirects = true;
setup.DisallowCodeDownload = true;
if (args.Length != 0 && args[0].Equals("-test"))
{
setup.ConfigurationFile = "PATH_TO_YOUR_TEST_CONFIG_FILE";
}
else {
setup.ConfigurationFile = "PATH_TO_YOUR_LIVE_CONFIG_FILE";
}
AppDomain domain = AppDomain.CreateDomain("FRIENDLY_NAME", null, setup);
domain.ExecuteAssembly("YourMainApp.exe");