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

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

Другие вопросы по тегам