我已经在我的项目中添加了App.config文件。我已经在项目>属性>设置面板中创建了两个设置-
我注意到,当我添加一个设置时,我可以将范围定义为User
或Application
。-
如果我将setting定义为User
,它将转到userSettings
部分,
如果我将setting定义为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;
User
和Application
作用域之间的区别是什么?在什么情况下应该在这两者之间进行选择?
发布于 2012-10-24 18:05:54
基本上,应用程序设置不能在程序运行期间更改,而用户设置可以更改。然后应保存这些用户设置,以便用户在下一次运行应用程序时获得熟悉的体验。
编辑:例如,您可能使用不同的模块编写应用程序,并且需要确保您的主模块使用安全模块的正确版本。为此,您需要设置一个应用程序范围的设置,例如:
SecurityModuleVersion string Application v1.21
稍后,当您重构安全模块时,可能会在部署时将该值更改为v1.22,以确保实现了正确的安全性
另一方面,如果你的应用程序有不同的“皮肤”,颜色变化,字体变化等,那么你可以设置一个用户设置,如下所示:
ApplicationSkin string User DefaultSkin
然后,当米歇尔更改为她喜欢的皮肤时,应用程序会记住她的设置。这些属性现在可能如下所示:
ApplicationSkin string User HelloKittySkin
发布于 2012-10-24 18:03:53
应用程序范围设置是只读的,并且只能在设计时或通过在两个应用程序会话之间更改.exe.config文件来更改。但是,用户范围的设置可以在运行时写入,就像更改任何属性值一样。新值在应用程序会话期间保持不变。通过调用Settings.Save方法,可以在应用程序会话之间保留对用户设置的更改。
用户设置通常用于持久化用户首选项(例如,应用程序通知首选项等)。应用程序设置通常用于API密钥等项。
正如@kmote所指出的,当用户设置在运行时被修改和持久化(通过settings.Save()
)时,它们将被写入用户配置文件存储(通常是Windows7和更高版本中的C:\Users**Username\AppData\Local**AppName )中的文件夹。要以编程方式确定文件的位置,请参阅this post。
https://stackoverflow.com/questions/13046907
复制相似问题