C# 程序设置未更新
我已经创建了我的c#winforms应用程序,并在properties、settings.settings中声明了一个字符串为“user”。当我第一次运行应用程序时,我可以使用以下代码成功地读取它:C# 程序设置未更新,c#,winforms,C#,Winforms,我已经创建了我的c#winforms应用程序,并在properties、settings.settings中声明了一个字符串为“user”。当我第一次运行应用程序时,我可以使用以下代码成功地读取它: string user = Properties.Settings.Default.Username; 我可以为Username保存新值,并在代码中再次读取它们。但是,当我更改settings.settings中的值并启动程序进行调试(例如,将其更改为“NoLiver”)时,它不会使用新文本,它仍
string user = Properties.Settings.Default.Username;
我可以为Username保存新值,并在代码中再次读取它们。但是,当我更改settings.settings中的值并启动程序进行调试(例如,将其更改为“NoLiver”)时,它不会使用新文本,它仍然将其读取为“user”而不是“NoLiver”。我不明白为什么会发生这种情况,因为我的另一个程序没有这样做
有人能解释一下发生了什么事吗?我不确定您是否需要任何其他信息,但询问您是否需要任何信息。可能发生的情况是,设置是用户范围的设置,而不是应用程序范围的设置。当您有一个用户范围设置时,“设置”中的值只是默认值,如果您运行程序,为用户生成了一个
User.config
文件,它将从User.config
文件中读取当前值
您有两个选项,将Username
更改为应用程序范围的设置或更改程序集的版本号,这将导致生成一个新的设置文件,并返回默认值(如果不希望返回默认值,请调用Upgrade()
在您的设置类上执行一次,它将检查旧版本,并将设置从以前版本的程序复制过来)
编辑:您还有一个选项,如果这只是为了调试,请单击Settings.Settings中的Synchronize
按钮,这将从硬盘中删除用户设置文件,并在下次运行程序时再次使用默认值
您正在调用
Properties.Settings.Default.Save()代码>?我在代码期间保存它时会这样做,并且工作正常。我说的是,当我在visual studio中更改它时,程序没有运行它必须是用户自定义的,因为它可以在运行时更改(我还没有编写代码,因此尝试这样做),在这种情况下,您需要更改程序集的版本号,以便强制生成新的用户设置文件,那就不要在上面调用Upgrade()
。如何更改版本号?我还需要它是1.0版,就像现在一样。还有其他方法吗?谢谢,但当我这么做时,我得到了“在以下任何位置都找不到user.config文件:”你是通过ClickOnce运行程序吗?我遇到了一个类似的问题,它没有删除clickonce应用程序的设置文件。您可能需要手动删除它,在程序运行时从程序中获取ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath的值,以查看必须删除的文件。删除该文件将执行单击“同步”将执行的操作。