Где на самом деле хранится конфигурация при использовании файла Settings.settings в .NET? Я хочу удалить сохраненные настройки, чтобы вернуться к состоянию по умолчанию, но не могу найти, где они хранятся ... есть идеи?
Ответы:
Это зависит от того, находится ли выбранный вами параметр в области «Пользователь» или «Приложение».
Настройки области пользователя хранятся в
C: \ Documents and Settings \ имя пользователя \ Local Settings \ Application Data \ ApplicationName
Вы можете читать / записывать их во время выполнения.
Для Vista и Windows 7 папка
C: \ Users \ имя пользователя \ AppData \ Local \ ApplicationName
или
C: \ Users \ имя пользователя \ AppData \ Roaming \ ApplicationName
Параметры области приложения сохраняются в, AppName.exe.config
и они доступны только для чтения во время выполнения.
Вот фрагмент, который вы можете использовать для программного получения местоположения файла user.config:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (то есть settings.settings) по умолчанию использует PerUserRoamingAndLocal для пользовательских настроек (как я помнил).
Обновление: странно, но здесь слишком много неправильных ответов. Если вы ищете файл настроек с пользовательской областью действия (user.config), он будет расположен в следующей папке (для Windows XP):
C: \ Documents and Settings \ (имя пользователя) \ Local Settings \ Application Data \ (имя-компании, если существует) \ (имя-приложения) .exe_ (URL-адрес | StrongName) _ (хеш) \ (версия-приложения) \
Url или StrongName зависит от того, есть ли у вас строгое имя сборки приложения.
Предполагая, что вы говорите о настольных компьютерах, а не о веб-приложениях:
Когда вы добавляете настройки в проект, VS создает файл с именем app.config
в каталоге вашего проекта и сохраняет настройки в этом файле. Он также создает Settings.cs
файл, который предоставляет статические средства доступа к отдельным параметрам.
Во время компиляции VS будет (по умолчанию; вы можете изменить это) скопирует app.config
файл в каталог сборки, изменив его имя, чтобы оно соответствовало исполняемому файлу (например, если ваш исполняемый файл назван foo.exe
, файл будет назван foo.exe.config
), которое является именем. Диспетчер конфигурации .NET ищет, когда он получает параметры во время выполнения.
Если вы измените настройку через редактор настроек VS, он обновит app.config
и Settings.cs
. (Если вы посмотрите на аксессоры свойств в сгенерированном коде в Settings.cs
, вы увидите, что они отмечены атрибутом, содержащим значение по умолчанию для параметра, находящегося в вашем app.config
файле.) Если вы измените параметр, отредактировав app.config
файл напрямую, Settings.cs
не будет обновляться, но новое значение будет по-прежнему использоваться вашей программой при ее запуске, поскольку оно app.config
копируется foo.exe.config
во время компиляции. Если вы отключите это (установив свойства файла), вы можете изменить настройку, напрямую отредактировав foo.exe.config
файл в каталоге сборки.
Затем есть пользовательские настройки.
Параметры области приложения доступны только для чтения. Ваша программа может изменять и сохранять настройки области действия пользователя, тем самым позволяя каждому пользователю иметь свои собственные настройки. Эти настройки не хранятся в foo.exe.config
файле (так как, по крайней мере, в Vista программы не могут писать ни в какой подкаталог Program Files
без повышения прав ); они хранятся в файле конфигурации в каталоге данных приложения пользователя.
Путь к этому файлу %appdata%\%publisher_name%\%program_name%\%version%\user.config
, например C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
. Обратите внимание: если вы дали своей программе строгое имя, строгое имя будет добавлено к имени программы в этом пути.
Просматривая, чтобы узнать о хэше в имени папки, я наткнулся (через этот ответ ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(отредактируйте: ссылка на Wayback Machine: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )
Точный путь к
user.config
файлам выглядит примерно так:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
где
<Profile Directory>
- это либо каталог перемещаемого профиля, либо локальный. По умолчанию настройки хранятся в локальномuser.config
файле. Чтобы сохранить настройку в перемещаемомuser.config
файле, вам необходимо пометить настройкуSettingsManageabilityAttribute
сSettingsManageability
установленным наRoaming
.
<Company Name>
- обычно является строкой, указанной вAssemblyCompanyAttribute
(с оговоркой, что строка экранируется и усекается по мере необходимости, и если она не указана в сборке, у нас есть резервная процедура).
<App Name>
- обычно строка, указанная вAssemblyProductAttribute
(те же предостережения, что и для названия компании).
<Evidence Type>
и<Evidence Hash>
- информация, полученная из свидетельства домена приложения, чтобы обеспечить надлежащую изоляцию домена приложения и сборки.
<Version>
- обычно версия, указанная вAssemblyVersionAttribute
. Это необходимо для изоляции разных версий приложения, развернутых параллельно.Имя файла всегда просто
user.config
".
Он находится в папке с именем вашего приложения в папке Application Data в домашней папке пользователя (C: \ documents and settings \ user на xp и c: \ users \ user в Windows Vista).
Существует некоторая информация здесь также.
PS: - попробуйте получить к нему доступ через% appdata% в окне запуска!
Эмм, а нельзя ли просто использовать Settings.Default.Reset () для восстановления настроек по умолчанию?
Все ваши настройки хранятся в соответствующем файле .config.
Файл .settings просто предоставляет строго типизированный класс для набора параметров, которые принадлежат друг другу, но фактические параметры хранятся в app.config или файле .config вашего приложения.
Если вы добавите файл .settings, app.config будет автоматически добавлен для хранения настроек, если у вас его еще нет.
Если ваш файл настроек находится в веб-приложении, они будут в файле web.config (прямо под вашим проектом. Если они находятся в любом другом типе проекта, они будут в файле app.config (также под вашим проектом). .
редактировать
Как указано в комментариях: настройки вашего приложения времени разработки находятся в файле app.config для приложений, отличных от веб-приложений. При сборке файл app.config копируется в выходной каталог и получает имя yourexename .exe.config. Во время выполнения будет прочитан только файл с именем yourexename.exe.config.
Два файла: 1) файл app.config или web.config. Параметры ее можно изменить после сборки с помощью текстового редактора. 2) Файл settings.designer.cs. В этом файле есть автоматически сгенерированный код для загрузки параметра из файла конфигурации, но также присутствует значение по умолчанию, если в файле конфигурации нет конкретной настройки.
Я знаю, что на него уже ответили, но не могли бы вы просто синхронизировать настройки в конструкторе настроек, чтобы вернуться к настройкам по умолчанию?