如何更改Settings.settings值的值

我有一个简单的控制台应用程序,每天运行(由Windows任务调度程序调用),并依赖于每次应用程序运行时递增的值。 为了保持这个值,我选择使用Settings.Settings文件。

所以我有一个带有Scope User的名为RunNumber的整数值,每次应用程序运行完毕时都会递增:

Properties.Settings.Default.RunNumber++; Properties.Settings.Default.Save(); 

我选择这个的部分原因是该值也被放入app.config文件中:

  0  

这意味着如果RunNumber必须意外增加,它可以在app.config中更改:

  10  

我的期望是,下次我的应用程序读取RunNumber的值时,它将采用app.config中设置的值(在本例中为10)。 这不会发生,而是在下次运行应用程序时,它将使用它最后修改的值,在这种情况下,运行编号将是1而不是我期望的10。

我的应用程序访问RunNumber的值,如下所示:

 Properties.Settings.Default.RunNumber 

如何在不修改应用程序的情况下更改RunNumber的值? 想法是,如果需要将其意外更改为值,我只需修改app.config中的值,而不必更改某些代码并重新部署应用程序。

app.config中的新用户使用您的应用程序时需要创建的默认设置。 在运行应用程序之后,将创建user.config以存储用户范围设置。

为了手动更改值,您需要在用户配置文件目录中的相应user.config中执行此操作,因为如果更改app.config只有新用户才会看到更改。

在没有漫游配置文件的Windows 7和名为Example.Settings.CustomClass的Windows窗体应用程序中,我获取了user.config的以下文件夹:

 C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0 

带有Scope User的名为RunNumber的整数值

用户范围意味着实际值不会保存在App.config中,而是保存在Users\\AppData\...文件夹下。

如果您的控制台应用程序在管理员帐户下运行(或未放置在程序文件中),则可以使用应用程序范围设置。

由于用户范围设置的值存储在用户文件中而不是app.config中,因此最好的方法是添加使用特定开关调用应用程序以重置所需值的function。 例如myapp.exe /setcount=123

当然,您必须以适当的用户身份运行应用程序,以确保将值设置在正确的文件中。

在访问Settings类之前,只需使用Reload() 。 您可以修改生成的Settings类,以便在每次访问特定属性时调用Reload