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

Par*_*ram 84 .net c# app-config application-settings winforms

我在我的项目中添加了App.config文件.我从Project> Properties> Settings面板创建了两个设置 -

在此输入图像描述

我注意到当我添加设置时,我可以将范围定义为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>
Run Code Online (Sandbox Code Playgroud)

但是,这些设置可以通过相同的方式访问.cs-

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1;
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2;
Run Code Online (Sandbox Code Playgroud)

在这两者之间应该选择的范围UserApplication范围之间有什么区别?

Cal*_*alC 70

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

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

用户设置通常用于持久化用户偏好(例如,应用通知偏好等).应用程序设置通常用于API密钥等项目.

正如@kmote所述,当用户设置被修改并在运行时(通过settings.Save())持久化时,它们将被写入用户配置文件存储中的文件夹(通常在Windows 7及更高版本中为C:\ Users\Username\AppData\Local\AppName)).要以编程方式确定文件的位置,请参阅此文章.

  • @Heliac:我应该更精确.你是正确的,可以在会话之间更改userSettings.但是,一旦你以编程方式更改它们(使用`Settings.Save()`),就会创建一个_new_配置文件并隐藏/隐藏在C:\ Users\[用户名]\AppData\Local\Microsoft中.从那时起,无论何时启动应用程序,都将从_that_文件专门绘制用户设置,并且将忽略在App.config或Settings.settings中手动进行的任何更改. (5认同)

mca*_*lex 67

基本上,在程序运行期间无法更改应用程序设置,用户设置也可以.然后应保存这些用户设置,以便在下次运行应用程序时向用户提供熟悉的体验.

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

SecurityModuleVersion  string     Application      v1.21
Run Code Online (Sandbox Code Playgroud)

一段时间后,当你重构的安全模块,可以将该值更改为V1.22当您部署,以确保正确的安全正在实施

另一方面,如果您的应用程序具有不同的"皮肤"颜色更改,字体更改等,那么您可以设置如下所示的用户设置:

ApplicationSkin        string     User              DefaultSkin
Run Code Online (Sandbox Code Playgroud)

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

ApplicationSkin        string     User              HelloKittySkin
Run Code Online (Sandbox Code Playgroud)

  • 应用程序设置保存到*.exe.config文件中.用户设置保存到c:\ users\<userid>\AppData\Local\<companyname>\<appname>\<version>\user.config(后者从程序集文件中提取).加载时,用户设置优先于应用程序设置. (4认同)