Где на самом деле хранится конфигурация при использовании файла 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. В этом файле есть автоматически сгенерированный код для загрузки параметра из файла конфигурации, но также присутствует значение по умолчанию, если в файле конфигурации нет конкретной настройки.
Я знаю, что на него уже ответили, но не могли бы вы просто синхронизировать настройки в конструкторе настроек, чтобы вернуться к настройкам по умолчанию?