在.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.config
和Settings.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
文件中存储设置,需要使用SettingsManageabilityAttribute
(SettingsManageability
设置为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器中的设置以回到默认设置?