Properties.Settings.Default 的数据保存在哪里?
Posted
技术标签:
【中文标题】Properties.Settings.Default 的数据保存在哪里?【英文标题】:Where is the data for Properties.Settings.Default saved? 【发布时间】:2010-12-20 17:32:28 【问题描述】:在我的 WPF 应用程序中,我在解决方案资源管理器中单击 Settings.settings 并输入具有 User 范围的 StringCollection 变量:
在我的 app.config 中,我看到它们保存在那里:
<userSettings>
<TestSettings.Properties.Settings>
<setting name="Paths" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>one</string>
<string>two</string>
<string>three</string>
<string>four</string>
<string>five</string>
<string>six</string>
<string>seven</string>
</ArrayOfString>
</value>
</setting>
</TestSettings.Properties.Settings>
</userSettings>
然后我运行我的应用程序并使用以下代码:
StringCollection paths = Properties.Settings.Default.Paths;
Properties.Settings.Default.Paths.Add("added in code");
Properties.Settings.Default.Save();
foreach (var path in paths)
System.Console.WriteLine(path);
这给了我这个输出:
one
two
three
four
five
six
seven
added in code
我再次运行应用程序,它给了我这个输出:
one
two
three
four
five
six
seven
added in code
added in code
但我再次查看我的 app.config,它仍然具有原始值:
<userSettings>
<TestSettings.Properties.Settings>
<setting name="Paths" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>one</string>
<string>two</string>
<string>three</string>
<string>four</string>
<string>five</string>
<string>six</string>
<string>seven</string>
</ArrayOfString>
</value>
</setting>
</TestSettings.Properties.Settings>
</userSettings>
正在保存的应用程序添加的值在哪里?
【问题讨论】:
【参考方案1】:由于您选择了用户范围,它们将保存在每个用户配置文件目录中,更具体地说,保存在用户配置文件的 AppData
文件夹中名为 user.config
的文件中。
完整路径取决于应用程序。
在没有漫游配置文件和名为Example.Settings.CustomClass
的 Windows 窗体应用程序的 Windows 7 中,我得到以下文件夹:
C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0
另请注意,它们的保存考虑了您的应用程序版本,并且存储在 App.config
中的值是用于新用户的默认值。
【讨论】:
我也有同样的问题。当我保存时,我看到它在 AppData\Local\xxxx 文件夹中得到更新。但是当我启动应用程序时,它不会从那里读取。如何强制它从那里读取? @coolshashi,您最好创建一个新问题,在其中描述您观察到加载用户设置失败的确切情况。 这个答案对于 Windows 10 仍然是正确的,并且适用于 WPF 和 winforms。所以user.config
的路径是<...>\Users\<user>\AppData\Local\<company>\<application>.exe_Url_<32 random characters>\<version>
。您的应用程序名称被截断为最多 25 个字符?
如果您想以编程方式获取此路径,look here。那是ConfigurationManager.OpenExeConfiguration(...).FilePath
。
<32 random characters>
... 微软您好!【参考方案2】:
我在 Win 10 下寻找设置。如果其他人需要知道,它们不会存储在 Microsoft 的子文件夹中(请参阅前面的答案)。看看这里:
C:\Users\[user]\AppData\Local\Example\Example...\1.0.0.0\
【讨论】:
【参考方案3】:我偶然发现了一种查找路径的简单方法。
-
打开应用程序属性。
在“应用程序”选项卡下,选择“程序集信息...”。
更改“公司”的值。选择确定保存。
选择“设置”应用程序属性选项卡。
选择“同步”(选项卡顶部选项中的第一个按钮)。
然后,您应该会收到一个 Visual Studio 信息对话框,显示“在以下任何位置都找不到 user.config 文件:”,然后是保存设置的位置列表。
【讨论】:
以上是关于Properties.Settings.Default 的数据保存在哪里?的主要内容,如果未能解决你的问题,请参考以下文章