我的程序有一些内置的设置,它们都有一个用户范围。但是,当程序启动时,它只会创建 AppName.exe.config 文件,其中包含设置。
稍后在运行时保存设置时,它会在 AppData/Local/AppName/ 位置创建 user.config 文件(以前不存在),但该文件仅包含保存的设置。
为什么会这样?为什么它不会创建 user.config 或在启动时使用它(如果存在)?
我的程序有一些内置的设置,它们都有一个用户范围。但是,当程序启动时,它只会创建 AppName.exe.config 文件,其中包含设置。
稍后在运行时保存设置时,它会在 AppData/Local/AppName/ 位置创建 user.config 文件(以前不存在),但该文件仅包含保存的设置。
为什么会这样?为什么它不会创建 user.config 或在启动时使用它(如果存在)?
应用程序范围的设置可以存储在 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),因此为什么只有这样您才能看到用户.config 文件已创建。
简而言之,不需要每个用户的 user.config 文件,只要用户范围的设置对每个人都是相同的(默认值)。