Когда создается app.config, когда app.exe.config и в чем разница - PullRequest
23 голосов
/ 31 января 2010

Мы создали приложение WinForms и сохранили некоторые конфигурации через класс ConfigurationManager. Для хранения информации я использую

Configuration pConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
pConfig.AppSettings.Settings.Add("updates", szUpdatesURL);
pConfig.Save(ConfigurationSaveMode.Modified);

Проблема в том, что в некоторых случаях приложение создает файл "appname" .config, а в других случаях - "appname" .exe.config.

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

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

Я провел тесты на одном и том же компьютере с точно таким же .exe, и я получил оба результата. Что тут происходит?

В чем разница между ними, и как я могу указать, какой из них должен быть создан? Большое спасибо

1 Ответ

27 голосов
/ 01 февраля 2010

"appname.exe.config" автоматически создается для вас при компиляции приложения. Это файл, который должен распространяться среди ваших конечных пользователей (вместе с exe-файлом, конечно). Параметры, установленные в appname.config, передаются в appname.exe.config. They are essentially the same files. Причина appname.config в том, что когда исполняемый файл запускается, его конфигурационный файл представляет собой простое имя исполняемого файла с суффиксом .config. Однако, если имя исполняемого файла изменилось, вам придется изменить имя файла exe.config вручную. Поэтому, автоматически переименовывая в время компиляции , app.config может изменить свое имя на файл newappname.exe.config, и CLR все равно его заберет. Вероятно, вы обнаружите, что файл appname.exe.config создается в каталоге bin. Надеюсь, это понятно :) Приведенные ниже ссылки могут объяснить это немного глубже.

Есть хорошее объяснение here. Еще одно хорошее чтение - CodePlex.

...