Как создать Application.exe.config в каталоге приложения - PullRequest
0 голосов
/ 17 марта 2011

Поэтому я недавно обновил свое приложение для поддержки новой функции. В прошлом, если файл конфигурации был удален пользователем, это не имело большого значения. Эта новая функция требует его существования, и одно из требований заключается в том, что файл существует в каталоге установки приложения.

Я заметил, что когда файл удален (в зависимости от переменных, которые я не выяснил), я получаю уведомление .NET, что файл конфигурации отсутствует или поврежден. В настоящее время моя программа аварийно завершает работу (я все еще должен выяснить, как продублировать это поведение), что является причиной этого вопроса.

Я знаком с ConfigurationManager. У меня проблемы с записью файла после загрузки значений по умолчанию. Принудительное сохранение по какой-то причине, похоже, не воссоздает файл, по крайней мере, не в установочном каталоге, что является обязательным требованием.

Я ищу указания, как элегантно обращаться с этим угловым корпусом. Я бы опубликовал код, честно говоря, это просто все неудачные попытки, которые, хотя мои попытки генерируют файл, не соответствуют настройкам, которые я ищу.

Я готов опубликовать все, что может помочь.

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Прекратите использовать встроенную поддержку конфигурации и просто используйте запись / чтение в файл с именем нечто.exe.config, используя стандартные классы XML, а если это удаляется, просто заново создайте его из значений, жестко закодированных в исполняемом файле..

Предполагается, что поддержка файла конфигурации должна облегчить задачу, если вам нужно что-то делать там, где это затрудняет, не используйте ее.

0 голосов
/ 17 марта 2011

Вы не делаете. При нормальных условиях программа не может записать в свой установочный каталог - это стандартная проблема безопасности Windows и причина, по которой данные приложения должны находиться во внешних (с точки зрения exe) каталогах.

Если администратор удалит файл конфигурации, произойдет сбой, попросите переустановить. НАДЕЖНО не делать ничего, так как вы не можете предполагать, что можете писать в папку во время выполнения. Лучшим подходом здесь является сообщение, сопровождаемое записью в журнале событий. Пользователи не должны удалять части приложения.

0 голосов
/ 17 марта 2011

что-то вроде

var wcfm = new WebConfigurationFileMap ();
Настройка newConfig = WebConfigurationManager.OpenMappedWebConfiguration (wcfm, "/");
newConfig.Save ();

не работает?

...