C# 在.NET中使用Settings.Settings文件时,配置实际存储在哪里?

C# 在.NET中使用Settings.Settings文件时,配置实际存储在哪里?,c#,.net,settings,C#,.net,Settings,在.NET中使用Settings.Settings文件时,配置实际存储在哪里? 我想删除保存的设置以返回默认状态,但找不到存储位置。。。有什么想法吗?您的所有设置都存储在相应的.config文件中 .settings文件只是为一组属于一起的设置提供了一个强类型类,但实际设置存储在应用程序的app.config或.config文件中 如果添加.settings文件,则如果尚未添加app.config文件,则会自动添加app.config文件以保存设置。它位于用户主文件夹(xp上的C:\docume

在.NET中使用Settings.Settings文件时,配置实际存储在哪里?
我想删除保存的设置以返回默认状态,但找不到存储位置。。。有什么想法吗?

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

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


如果添加.settings文件,则如果尚未添加app.config文件,则会自动添加app.config文件以保存设置。

它位于用户主文件夹(xp上的C:\documents and settings\User和Windows Vista上的C:\users\User)中应用程序名称所在的文件夹中

还有一些信息


PS:-尝试通过运行框中的%appdata%访问它

如果您的设置文件位于web应用程序中,则它们将位于web.config文件中(位于项目的正下方)。如果它们位于任何其他类型的项目中,则它们将位于app.config文件中(也位于项目的正下方)

编辑

正如注释中所指出的:对于web应用程序以外的应用程序,您的设计时应用程序设置位于app.config文件中。生成时,app.config文件将复制到输出目录,并命名为yourexename.exe.config。在运行时,仅读取名为yourexename.exe.config的文件。

两个文件: 1) app.config或web.config文件。可以在使用文本编辑器生成后自定义设置。
2) settings.designer.cs文件。此文件具有从配置文件加载设置的自动生成代码,但如果配置文件没有特定设置,也会显示默认值。

以下是可用于以编程方式获取user.config文件位置的代码段:

public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
  try
  {
    var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
    return UserConfig.FilePath;
  }
  catch (ConfigurationException e)
  {
    return e.Filename;
  }
}
应用程序设置(即settings.settings)默认使用PerUserRoaming和Local进行用户设置(如我所记得的)

更新:奇怪,但这里有太多不正确的答案。如果您正在查找用户范围的设置文件(user.config),它将位于以下文件夹(适用于Windows XP):

C:\文件和 设置\(用户名)\Local 设置\应用程序 数据\(公司名称,如果存在)\(应用程序名称).exe \(Url | strong名称)\(哈希)\(应用程序版本)\


Url或strong名称取决于您是否拥有应用程序集strong名称。

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

用户范围 用户范围设置存储在

C:\Documents and Settings\ username \Local Settings\Application Data\ ApplicationName C:\Documents and Settings\username\Local Settings\Application Data\ApplicationName 您可以在运行时读/写它们

对于Vista和Windows 7,文件夹是

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

C:\Users\username\AppData\Roaming\ApplicationName 适用范围
应用程序范围设置保存在
AppName.exe.config
中,并且在运行时是只读的

假设您谈论的是桌面而不是web应用程序:

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

在编译时,VS将(默认情况下;您可以更改此设置)将
app.config
复制到生成目录,更改其名称以匹配可执行文件(例如,如果您的可执行文件名为
foo.exe
,则文件名为
foo.exe.config
),这是.NET configuration manager在运行时检索设置时查找的名称

如果通过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下,至少在没有提升的情况下,程序无法写入
程序文件的任何子目录);它们存储在用户应用程序数据目录中的配置文件中


该文件的路径是
%appdata%\%publisher\u name%\%program\u name%\%version%\user.config
,例如
C:\Users\My name\appdata\Local\My\u Company\My\u program.exe\1.0.0\user.config
。请注意,如果您为程序指定了强名称,则强名称将附加到此路径中的程序名称。

我知道它已被应答,但您不能只同步设置设计器中的设置以移回默认设置吗?

呃,您不能只使用settings.default.Reset()要恢复默认设置吗?

在浏览文件夹名称中的哈希时,我(通过)发现:

(编辑:回送机器链接:)

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

\\\\\\\user.config

在哪里

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