App.config:用户与应用程序范围

我在我的项目中添加了App.config文件。 我从项目>属性>设置面板创build了两个设置 –

在这里输入图像说明

我注意到,当我添加设置时,我可以将范围定义为UserApplication 。 –

  1. 用户
  2. 应用

如果我将User设置定义为userSettings部分,
如果我将设置定义为Application它将转到applicationSettings部分

App.config中

 <configuration> <userSettings> <DemoApp.Properties.Settings> <setting name="MySetting1" serializeAs="String"> <value>Value1</value> </setting> </DemoApp.Properties.Settings> </userSettings> <applicationSettings> <DemoApp.Properties.Settings> <setting name="MySetting2" serializeAs="String"> <value>Value2</value> </setting> </DemoApp.Properties.Settings> </applicationSettings> </configuration> 

但是,这些设置可以以同样的方式从.cs

 string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1; string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2; 

UserApplication范围有什么区别,在什么情况下应该在这两者之间进行select?

基本上,应用程序设置不能在运行程序和用户设置期间更改。 这些用户设置应该被保存下来,以便用户在接下来运行应用程序时能够获得熟悉的体验。

编辑:举例来说,你可能用不同的模块编写你的应用程序,并且需要确保你的主模块使用了你的安全模块的正确版本。 为此,您可以设置应用程序范围设置,例如:

 SecurityModuleVersion string Application v1.21 

稍后当您重构安全模块时, 可以在部署时将值更改为v1.22,以确保正确执行安全

另一方面,如果你的应用程序有不同的颜色变化,字体变化等“皮肤”,那么你可以设置一个用户设置如下:

 ApplicationSkin string User DefaultSkin 

然后,当米歇尔改变她喜欢的皮肤时,应用程序会记住她的设置。 现在的属性可能如下所示:

 ApplicationSkin string User HelloKittySkin 

应用程序范围设置是只读的,只能在devise时或通过在应用程序会话之间更改.exe.config文件进行更改。 但是,用户范围设置可以在运行时写入,就像更改任何属性值一样。 新值在应用程序会话持续时间内保持不变。 通过调用Settings.Save方法,您可以在应用程序会话之间持续更改用户设置。

msdn上的源代码: 在C#中使用设置