【发布时间】:2010-11-07 16:39:08
【问题描述】:
在 .NET 中使用 Settings.settings 文件时,配置实际存储在哪里? 我想删除保存的设置以恢复默认状态,但找不到它的存储位置...有什么想法吗?
【问题讨论】:
在 .NET 中使用 Settings.settings 文件时,配置实际存储在哪里? 我想删除保存的设置以恢复默认状态,但找不到它的存储位置...有什么想法吗?
【问题讨论】:
在浏览以找出文件夹名称中的哈希时,我遇到了(通过this answer):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(编辑:Wayback 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文件中,您需要使用SettingsManageabilityAttribute标记设置,并将SettingsManageability设置为Roaming。
<Company Name>- 通常是AssemblyCompanyAttribute指定的字符串(需要注意的是,该字符串会根据需要进行转义和截断,如果未在程序集中指定,我们有一个备用程序)。
<App Name>- 通常是由AssemblyProductAttribute指定的字符串(与公司名称相同的注意事项)。
<Evidence Type>和<Evidence Hash>- 源自应用程序域证据的信息,以提供适当的应用程序域和程序集隔离。
<Version>- 通常是AssemblyVersionAttribute中指定的版本。这是隔离并排部署的应用程序的不同版本所必需的。文件名总是简单的'
user.config'。
【讨论】:
这取决于您选择的设置是在“用户”范围还是“应用程序”范围。
用户范围设置存储在
C:\Documents and Settings\ 用户名 \Local Settings\Application Data\ ApplicationName
您可以在运行时读取/写入它们。
对于 Vista 和 Windows 7,文件夹是
C:\Users\ 用户名 \AppData\Local\ 应用程序名
或
C:\Users\ 用户名 \AppData\Roaming\ 应用程序名
应用程序范围设置保存在AppName.exe.config 中,它们在运行时是只读的。
【讨论】:
如果您的设置文件位于 Web 应用程序中,它们将位于 web.config 文件中(就在您的项目下方。如果它们位于任何其他类型的项目中,它们将位于 app.config 文件中(也在下方你的项目)。
编辑
正如 cmets 中所指出的:您的设计时应用程序设置位于 web 应用程序以外的应用程序的 app.config 文件中。构建时,app.config 文件被复制到输出目录,并将命名为 yourexename.exe.config。在运行时,只会读取名为 yourexename.exe.config 的文件。
【讨论】:
它位于用户主文件夹(xp 上为 C:\documents and settings\user 和 Windows Vista 上为 c:\users\user)的 Application Data 文件夹中的应用程序名称的文件夹中。
还有一些信息here。
PS:- 尝试在运行框中通过 %appdata% 访问它!
【讨论】:
这里是可以用来以编程方式获取 user.config 文件位置的 sn-p:
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:\文档和 设置\(用户名)\本地 设置\应用程序 Data\(company-name-if-exists)\(app-name).exe_(Url|StrongName)_(hash)\(app-version)\
Url 或 StrongName 取决于您是否有应用程序程序集强名称。
【讨论】:
我知道它已经得到答复,但您不能在设置设计器中同步设置以恢复默认设置吗?
【讨论】:
呃,你不能只使用 Settings.Default.Reset() 来恢复你的默认设置吗?
【讨论】:
假设您在谈论桌面而不是 Web 应用程序:
当您向项目添加设置时,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。请注意,如果您为程序指定了强名称,则强名称将附加到此路径中的程序名称。
【讨论】:
两个文件: 1) app.config 或 web.config 文件。她的设置可以在使用文本编辑器构建后进行自定义。 2) settings.designer.cs 文件。该文件具有自动生成的代码来从配置文件中加载设置,但如果配置文件没有特定设置,也会出现默认值。
【讨论】:
您的所有设置都存储在相应的 .config 文件中。
.settings 文件只是为属于一起的一组设置提供了一个强类型类,但实际设置存储在 app.config 或应用程序中的 .config 文件中。
如果您添加 .settings 文件,则会自动添加一个 app.config 来存放设置(如果您还没有)。
【讨论】: