Файл настроек Visual Studio - как это работает? - PullRequest
6 голосов
/ 16 июня 2009

Я не понимаю следующих вещей:

  1. В чем разница между app.config (applicationname.exe.config) и файлом настроек?
  2. Я не могу найти файл * .settings в каталоге Windows AppData под указанной учетной записью (я слышал, что он должен находиться где-то там)?
  3. Предположим, что файл * .settings находится где-то на жестком диске. Почему во время разработки данные из файла настроек копируются в файл конфигурации приложения?

С уважением PK

Ответы [ 2 ]

5 голосов
/ 19 июня 2009

Таким образом, настройки по умолчанию хранятся в файле <exename>.config, расположенном в том же каталоге, что и исполняемый файл.

Причина, по которой вы не можете найти файл user.config, заключается в том, что он создается, только если вы внесли изменения в значения по умолчанию. Пользовательские настройки переопределяют значения по умолчанию, которые хранятся в файле <exename>.config. Если не было внесено никаких изменений, то пользовательский файл конфигурации не будет существовать. И ... как только он будет существовать, вы заметите, что в файле user.config будут отображаться только те настройки, которые были изменены.

Чтобы проверить это ... создайте фиктивную переменную с именем like temp в вашем файле настроек. При запуске приложения выполните:

Settings1.Default.temp = Settings1.Default.temp + 1;
Settings1.Default.Save();

Теперь у вас будет файл user.config, созданный в папке ApplicationData пользователя, которая в Vista находится в: C:\Users\<username>\AppData\Local\<company>\<productname>

Вот некоторый код, который я написал, чтобы определить, где находятся все различные специальные папки в разных операционных системах. (Возможно, потребуется выполнить поиск-замену log.Debug и заменить на Console.WriteLine)

log.Debug("SpecialFolder.ApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData ));
log.Debug("SpecialFolder.CommonApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData ));
log.Debug("SpecialFolder.ProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
log.Debug("SpecialFolder.CommonProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles ));
log.Debug("SpecialFolder.DesktopDirectory: " + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory ));
log.Debug("SpecialFolder.LocalApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData ));
log.Debug("SpecialFolder.MyDocuments: " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments ));
log.Debug("SpecialFolder.System: " + Environment.GetFolderPath(Environment.SpecialFolder.System ));

Вывод в Windows Server 2003:

SpecialFolder.ApplicationData: "C:\Documents and Settings\blake\Application Data"
SpecialFolder.CommonApplicationData: "C:\Documents and Settings\All Users\Application Data"
SpecialFolder.ProgramFiles: "C:\Program Files"
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files"
SpecialFolder.DesktopDirectory: "C:\Documents and Settings\blake\Desktop"
SpecialFolder.LocalApplicationData: "C:\Documents and Settings\blake\Local Settings\Application Data"
SpecialFolder.MyDocuments: "C:\Documents and Settings\blake\My Documents"
SpecialFolder.System: "C:\WINDOWS\system32"

Вывод на Vista:

SpecialFolder.ApplicationData: "C:\Users\blake\AppData\Roaming"
SpecialFolder.CommonApplicationData: "C:\ProgramData"
SpecialFolder.ProgramFiles: "C:\Program Files"
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files"
SpecialFolder.DesktopDirectory: "C:\Users\blake\Desktop"
SpecialFolder.LocalApplicationData: "C:\Users\blake\AppData\Local"
SpecialFolder.MyDocuments: "C:\Users\blake\Documents"
SpecialFolder.System: "C:\Windows\system32"
0 голосов
/ 16 июня 2009
  1. Файл app.config представляет параметры, присущие приложению, и будет применяться ко всем сеансам приложения. Файл * .settings обычно предназначен для настроек, специфичных для использования приложения данным пользователем.

  2. Попробуйте поискать в каталоге «Данные приложения» в разделе «Локальные настройки» [«username» \ Local Settings \ Application Data \ «имя приложения ...»] вместо прямого каталога пользовательских данных приложения [«username» \ Application ». Данные].

  3. Копия настроек в файле app.config для данного файла * .settings используется для его инициализации при первом использовании этих настроек; включая случай, когда добавлен новый параметр и предыдущая копия файла * .settings еще не имеет нового параметра.

Вот ссылка для краткого ознакомления с настройками в C #.

Использование настроек в C # (MSDN)

...