2009-11-26 193 views
42

在我的WPF应用程序,我点击在Solution Explorer Settings.settings,并用用户范围输入StringCollection变量:Properties.Settings.Default的数据在哪里保存?

alt text http://i45.tinypic.com/24xdmir.png

在我的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> 

然后我运行我的应用程序与THI S码:

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> 

如果是由应用程序添加的值被保存?

回答

46

由于您选择的用户范围,它们被保存在每个用户的配置文件目录,更具体地说,在一个名为user.config文件的用户配置文件的AppData文件夹内。

完整路径取决于应用程序。

在Windows 7没有漫游配置文件和一个名为Example.Settings.CustomClass我得到以下文件夹中的Windows窗体应用程序:

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

另外请注意,它们被保存在服用考虑您的应用程序,并且该版本存储在App.config中的值是新用户使用的默认值。

+1

我有同样的问题。当我保存时,我发现它在AppData \ Local \ xxxx文件夹中得到更新。但是当我启动应用程序时,它不会从那里读取。我如何强制它从那里读取? – coolshashi 2015-03-20 02:45:44

+0

@coolshashi,在您描述您观察加载用户设置失败的确切条件时,您最好创建一个新问题。 – 2015-03-20 08:55:44

+3

对于Windows 10,此答案仍然正确,并且适​​用于WPF和winforms。所以'user.config'的路径是'<...> \ Users \ \ AppData \ Local \ \ .exe_Url_ <32个随机字符> \ '。您的应用程序名称被截断为25个字符,可能是最大的? – 2016-07-30 16:10:23

0

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

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