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 的路径是&lt;...&gt;\Users\&lt;user&gt;\AppData\Local\&lt;company&gt;\&lt;application&gt;.exe_Url_&lt;32 random characters&gt;\&lt;version&gt;。您的应用程序名称被截断为最多 25 个字符? 如果您想以编程方式获取此路径,look here。那是ConfigurationManager.OpenExeConfiguration(...).FilePath &lt;32 random characters&gt;... 微软您好!【参考方案2】:

我在 Win 10 下寻找设置。如果其他人需要知道,它们不会存储在 Microsoft 的子文件夹中(请参阅前面的答案)。看看这里:

C:\Users\[user]\AppData\Local\Example\Example...\1.0.0.0\

【讨论】:

【参考方案3】:

我偶然发现了一种查找路径的简单方法。

    打开应用程序属性。 在“应用程序”选项卡下,选择“程序集信息...”。 更改“公司”的值。选择确定保存。 选择“设置”应用程序属性选项卡。 选择“同步”(选项卡顶部选项中的第一个按钮)。 然后,您应该会收到一个 Visual Studio 信息对话框,显示“在以下任何位置都找不到 user.config 文件:”,然后是保存设置的位置列表。

【讨论】:

以上是关于Properties.Settings.Default 的数据保存在哪里?的主要内容,如果未能解决你的问题,请参考以下文章