При использовании файла Settings.settings в.NET, где на самом деле хранится конфигурация?
При использовании файла Settings.settings в.NET, где на самом деле хранится конфигурация? Я хочу удалить сохраненные настройки, чтобы вернуться в состояние по умолчанию, но не могу найти, где он хранится... какие-нибудь идеи?
10 ответов
Это зависит от того, находится ли выбранная вами настройка в области "Пользователь" или "Область применения".
Пользовательская область
Настройки пользовательских областей хранятся в
C:\Documents and 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: \ Документы и настройки \ (имя пользователя) \ Локальные настройки \ Данные приложения \ (название компании, если существует) \ (имя приложения).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
Точный путь
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(), чтобы восстановить настройки по умолчанию?
Если ваш файл настроек находится в веб-приложении, они будут в файле web.config (прямо под вашим проектом. Если они находятся в любом другом типе проекта, они будут в файле app.config (также под вашим проектом),
редактировать
Как указано в комментариях: ваши настройки приложения времени разработки находятся в файле app.config для приложений, отличных от веб-приложений. При сборке файл app.config копируется в выходной каталог и будет называться yourexename.exe.config. Во время выполнения будет прочитан только файл с именем yourexename.exe.config.
Все ваши настройки хранятся в соответствующем файле.config.
Файл.settings просто предоставляет строго типизированный класс для набора параметров, которые принадлежат друг другу, но фактические настройки хранятся в файле app.config или.config в вашем приложении.
Если вы добавите файл.settings, автоматически будет добавлен файл app.config для хранения настроек, если у вас его еще нет.
Два файла: 1) файл app.config или web.config. Настройки ее можно настроить после сборки с помощью текстового редактора. 2) Файл settings.designer.cs. Этот файл имеет автоматически сгенерированный код для загрузки параметра из файла конфигурации, но значение по умолчанию также присутствует в том случае, если файл конфигурации не имеет определенного параметра.
Я знаю, что он уже ответил, но не могли бы вы просто синхронизировать настройки в конструкторе настроек, чтобы вернуться к настройкам по умолчанию?