我的程序内置了一些设置,其中都有一个用户范围。但是,当程序启动时,它只会创建包含设置的AppName.exe.config文件。
稍后在运行时保存设置时,它会在AppData / Local / AppName / location中创建user.config文件(以前不存在),但该文件仅包含已保存的设置。
为什么会这样?为什么不创建user.config或在启动时使用它?如果它存在?
答案 0 :(得分:3)
来自Application Settings Architecture at MSDN:
应用程序范围的设置可以存储在machine.config或app.exe.config文件中。 Machine.config始终是 只读,而app.exe.config受安全限制 对大多数应用程序只读的注意事项。
用户范围的设置可以存储在app.exe.config文件中,在这种情况下,它们会被视为静态默认值。
- 醇>
非默认用户范围设置存储在新文件user.config中,其中user是当前人员的用户名 执行申请。您可以为用户范围指定默认值 使用DefaultSettingValueAttribute进行设置。因为用户范围 设置经常在应用程序执行期间更改,user.config是 总是读/写。
您首先看到的是(您所谓的)您的“内置设置”存储为(Microsoft调用的)“静态默认”用户范围设置,这些设置存储在app.exe中(根据2)。
然后当您在运行时回写设置时,它们被视为“非默认”用户范围设置,并且它们被写入user.config(按照3),因此为什么只有这样你呢?查看创建的user.config文件。
简而言之,只要用户范围的设置对每个人都相同(默认值),就不需要每用户user.config文件。