Все зависит от того, когда и зачем вам нужен файл конфигурации. Суть этого такова:
- ConfigurationManager извлечет файл конфигурации для самого приложения (возможно, ограничено текущим пользователем).
- AppDomain вернет любой файл конфигурации, с которым он был загружен (который в некоторых случаях может совпадать с файлом приложения).
В качестве грубого примера, давайте возьмем гипотетическое приложение, которое может использовать плагины, которые он добавляет / удаляет на лету. Вы не хотите, чтобы эти сборки плагинов оставались в памяти в течение всего срока службы приложения, что противоречило бы цели, поэтому вы создаете отдельный AppDomain в своем приложении. Он будет обрабатывать загрузку и обмен данными между приложением и сборками плагинов, делать с ними все, что вам нужно, и приложение сможет выгружать сборки, удаляя AppDomain, когда это необходимо.
Плагин AppDomain имеет довольно много настроек, которые вы предпочитаете хранить отдельно от файла конфигурации клиента, поэтому при создании AppDomain вы указываете отдельное местоположение файла. В , что AppDomain, файл конфигурации , этот файл .
Однако конфигурация клиента может зависеть от того, кто его использует (и они могут иметь возможность изменить его и настроить свои параметры). Вместо этого вы бы предпочли использовать конфигурацию всего приложения, которая отделена заданным пользователем, и даже не дать им возможность связываться с настройками плагина (или настройками других пользователей). ConfigurationManager теоретически может извлечь из любое количество файлов .
Это очень общая идея, которая отмахивается от всей реализации, но, надеюсь, это начинает иллюстрировать, как эти два могут различаться.
Здесь приведены страницы MSDN для AppDomainSetup и OpenExeConfiguration () , которые также могут быть полезны и содержат дополнительные ссылки на ресурсы, связанные с конфигурацией.