При использовании файла Settings.settings в .NET, где действительно хранится конфиг?

При использовании файла Settings.settings в .NET, где действительно хранится конфиг? Я хочу удалить сохраненные настройки, чтобы вернуться к состоянию по умолчанию, но не могу найти, где он хранится... любые идеи?

Ответ 1

Это зависит от того, находится ли выбранная вами настройка в области "Пользователь" или "Область применения".

Пользовательская область

Настройки пользовательских областей хранятся в

C:\Documents and Settings\ username \Local Settings\Application Data\ ApplicationName

Вы можете читать/писать их во время выполнения.

Для Vista и Windows 7 папка

C:\Users\ username \AppData\Local\ ApplicationName

или же

C:\Users\ username \AppData\Roaming\ ApplicationName

Область применения

Настройки области приложения сохраняются в AppName.exe.config и доступны только для чтения во время выполнения.

Ответ 2

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

Ответ 3

Предполагая, что вы говорите о настольных, а не веб-приложениях:

При добавлении настроек в проект VS создает файл с именем app.config в каталоге проекта и сохраняет настройки в этом файле. Он также создает файл Settings.cs, который предоставляет статические аксессоры к отдельным настройкам.

Во время компиляции VS будет (по умолчанию, вы можете это изменить) скопировать app.config в каталог сборки, изменив его имя в соответствии с исполняемым файлом (например, если ваш исполняемый файл имеет имя foo.exe, файл будет named 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. Обратите внимание, что если вы дали своей программе сильное имя, сильное имя будет добавлено к имени программы в этом пути.

Ответ 4

Просматривая вокруг, чтобы выяснить хеш в имени папки, я наткнулся (через этот ответ):

http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx

(редактировать: Wayway 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, необходимо пометить этот параметр с помощью user.config SettingsManageabilityAttribute а для SettingsManageability установлено значение Roaming.

<Company Name> - обычно это строка, указанная в AssemblyCompanyAttribute (с оговоркой, что строка экранируется и усекается по мере необходимости, и, если она не указана в сборке, у нас есть процедура отката).

<App Name> - обычно это строка, указанная атрибутом AssemblyProductAttribute (те же предостережения, что и для названия компании).

<Evidence Type> и <Evidence Hash> - информация, полученная из свидетельства домена приложения, чтобы обеспечить надлежащую изоляцию домена приложения и сборки.

<Version> - обычно версия, указанная в AssemblyVersionAttribute. Это необходимо для изоляции разных версий приложения, развернутых рядом.

Имя файла всегда просто " user.config ".

Ответ 5

Erm, можете ли вы не просто использовать Settings.Default.Reset() для восстановления настроек по умолчанию?

Ответ 6

Он находится в папке с именем вашего приложения в папке "Данные приложения" в домашней папке пользователя (C:\documents and settings\user на xp и c:\users\user в Windows Vista).

Существует некоторая информация здесь.

PS: попробуйте получить доступ к нему% appdata% в поле запуска!

Ответ 7

Все ваши настройки хранятся в соответствующем файле .config.

Файл .settings просто предоставляет строго типизированный класс для набора параметров, которые принадлежат друг другу, но фактические настройки хранятся в файле app.config или .config в вашем приложении.

Если вы добавите файл .settings, app.config будет автоматически добавлен для размещения настроек, если у вас его еще нет.

Ответ 8

Если ваш файл настроек находится в веб-приложении, он будет находиться в файле web.config(прямо под вашим проектом). Если они находятся в любом другом проекте, они будут в файле app.config(также ниже ваш проект).

Edit

Как указано в комментариях: ваши параметры приложения времени разработки находятся в файле app.config для приложений, отличных от веб-приложений. Когда вы создаете, файл app.config копируется в выходной каталог и будет называться yourexename.exe.config. Во время выполнения будет прочитан только файл с именем yourexename.exe.config.

Ответ 9

Два файла: 1) Файл app.config или web.config. Настройки ее можно настроить после сборки с помощью текстового редактора. 2) Файл settings.designer.cs. Этот файл имеет автогенерированный код для загрузки этого параметра из файла конфигурации, но значение по умолчанию также присутствует, если конфигурационный файл не имеет конкретной настройки.

Ответ 10

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