此代码的 User 属性设置为 User 范围:
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ConsoleApplication4.Settings1.Default["User"]); //prints "DefaultUser"
ConsoleApplication4.Settings1.Default["User"] = "abc";
Console.WriteLine(ConsoleApplication4.Settings1.Default["User"]);
ConsoleApplication4.Settings1.Default.Save();
Console.Read();
}
}
}
将设置保存到不知名的位置:
C:\Users\用户名\AppData\Local\ConsoleApplication4\ConsoleApplication4.exe_Url_acauylh2btl2j4ed0ilz0mujq5aomfmu\1.0.0.0
因此,即使在您的 app.config 中,您在多次运行应用程序后仍然会看到“默认用户”:
<userSettings>
<ConsoleApplication4.Settings1>
<setting name="User" serializeAs="String">
<value>Default User</value>
</setting>
</ConsoleApplication4.Settings1>
</userSettings>
在 User.Config 中,它将是用户的最后设置值。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<ConsoleApplication4.Settings1>
<setting name="User" serializeAs="String">
<value>abc</value>
</setting>
</ConsoleApplication4.Settings1>
</userSettings>
</configuration>
当我第一次运行这段代码时,输出是“默认用户”,“abc”,第二次运行输出是“abc”“abc”
也许只是您丢失了Save();。
如果您的 App.Config 文件与程序一起存储在某处的 Program Files 下,普通用户(非管理员、非超级用户)将无法写入该文件。
在调试会话之间保留 app.config 中的数据
您必须编写从 PreBuild 事件触发的 exe 或脚本,该事件将 User.Config 设置写回 settings1.settings 文件,然后内置到 App.Config 中。
我认为您不想这样做,因为 User.config 会覆盖 App.Config 并且第二次调试代码时您会得到“abc”“abc”。
我非常有信心只是缺少Save()。或者应用程序范围设置应该是只读的。