Я знаю, что это старый вопрос, но для тех, кто просто хочет, чтобы их файл app.config находился в другом месте, а не в месте сборки двоичного вывода, следующее работает так, как это задумал Microsoft не нужно перечитывать и перезаписывать файл на диск)
- Определите app.config, как вы всегда делаете.
- Определите другой файл конфигурации, в котором вы хотите иметь фактический файл конфигурации
- Измените app.config, чтобы он ссылался на файл конфигурации
Во время выполнения настройки из файла конфигурации будут переопределять настройки в app.config (если есть). И все готово.
Пример app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<appSettings file="..\Config\settings.config">
<add key="port" value="1001"/>
</appSettings>
</configuration>
Обратите внимание на file = ".. \ Config \ settings.config" . Вы совершенно свободно можете указать путь к месту, где вы хотите, чтобы ваши пользователи изменили настройки.
Пример файла фактической конфигурации
<?xml version="1.0" encoding="utf-8"?>
<appSettings>
<add key="port" value="1234"/>
</appSettings>
Во время выполнения настройка port
будет иметь значение 1234.
Подробнее см. msdn