在.NET中使用Settings.settings文件时,configuration实际存储在哪里?

在.NET中使用Settings.settings文件时,configuration实际存储在哪里? 我想删除已保存的设置以回到默认状态,但无法find它的存储位置…有什么想法?

这取决于您select的设置是在“用户”范围还是“应用程序”范围内。

用户范围设置存储在

C:\ Documents and Settings \ 用户名 \ Local Settings \ Application Data \ ApplicationName

您可以在运行时读取/写入它们。

对于Vista和Windows 7,文件夹是

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

要么

C:\ Users \ username \ 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取决于您是否具有应用程序程序集强名称。

假设你在谈论桌面而不是Web应用程序:

将设置添加到项目时,VS会在项目目录中创build一个名为app.config的文件,并将设置存储在该文件中。 它还构buildSettings.cs文件,该文件为各个设置提供静态访问器。

在编译时,VS会(默认情况下,你可以改变这个)将app.config复制到build目录,改变它的名称以匹配可执行文件(例如,如果你的可执行文件名为foo.exe ,那么文件将被命名为foo.exe.config ),这是.NETconfigurationpipe理器在运行时检索设置时查找的名称。

如果您通过VS设置编辑器更改设置,它将更新app.configSettings.cs 。 (如果您查看Settings.cs生成的代码中的属性访问器,则会看到它们标记的属性包含app.config文件中设置的默认值。)如果更改了设置通过直接编辑app.config文件, Settings.cs将不会被更新,但是当你运行它时,新的值仍然会被你的程序使用,因为app.config在编译时被复制到foo.exe.config 。 如果closures此function(通过设置文件属性),则可以通过直接编辑构build目录中的foo.exe.config文件来更改设置。

然后是用户范围的设置。

应用程序范围设置是只读的。 您的程序可以修改和保存用户范围设置,从而允许每个用户拥有自己的设置。 这些设置并不存储在foo.exe.config文件中(因为在Vista下,至less程序无法写入Program Files任何子目录)。 它们存储在用户应用程序数据目录中的configuration文件中。

该文件的path是%appdata%\%publisher_name%\%program_name%\%version%\user.config ,例如C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config 。 请注意,如果您为程序指定了强名称,强名称将被添加到此path中的程序名称中。

在浏览找出文件夹名称中的散列时,我碰到(通过这个答案 ):

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

user.config文件的确切path如下所示:

<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config

哪里

<Profile Directory> – 是漫游configuration文件目录或本地目录。 设置默认存储在本地user.config文件中。 要在漫游的user.config文件中存储设置,需要使用SettingsManageabilityAttributeSettingsManageability设置为Roaming标记设置。

<Company Name> – 通常是由AssemblyCompanyAttribute指定的string(注意string被转义并根据需要被截断,如果未在程序集中指定,我们有一个后备过程)。

<App Name> – 通常是由AssemblyProductAttribute指定的string(与公司名称相同)。

<Evidence Type><Evidence Hash> – 从应用程序域证据导出的信息,以提供适当的应用程序域和程序集隔离。

<Version> – 通常是在AssemblyVersionAttribute指定的版本。 这是隔离不同版本的应用程序所必需的。

文件名总是简单的' user.config '。

呃,你不能只使用Settings.Default.Reset()来恢复你的默认设置?

它位于用户主文件夹(Windows XP上的C:\ documents and settings \ user和Windows Vista上的c:\ users \ user)的Application Data文件夹中的应用程序名称的文件夹中。

这里也有一些信息。

PS: – 尝试通过%appdata%在运行框中访问它!

所有设置都存储在相应的.config文件中。

.settings文件只为一组属于一组的设置提供强types的类,但是实际的设置存储在应用程序的app.config或.config文件中。

如果您添加.settings文件,则会自动添加一个app.config来保存设置,如果您还没有。

如果你的设置文件在一个web应用程序中,它们将会在web.config文件中(在你的项目下面),如果它们在任何其他types的项目中,它们将在app.config文件中(也在你的项目下面) 。

编辑

正如在注释中指出的那样:您的devise时间应用程序设置位于web应用程序以外的应用程序的app.config文件中。 当您构build时,app.config文件被复制到输出目录,并将被命名为yourexename .exe.config。 在运行时,只会读取名为yourexename.exe.config的文件。

两个文件:1)一个app.config或web.config文件。 使用文本编辑器生成后,可以自定义她的设置。 2)settings.designer.cs文件。 该文件具有自动生成的代码来从configuration文件加载设置,但是在configuration文件没有特定设置的情况下也存在默认值。

我知道它已经回答了,但是难道你只是同步设置devise器中的设置以回到默认设置?