我有一个简单的控制台应用程序,每天运行(由Windows任务调度程序调用),并依赖于每次运行应用程序时递增的值.为了保持这个值,我选择使用Settings.Settings文件.
所以我有一个带有Scope User的名为RunNumber的整数值,每次应用程序运行完毕时都会递增:
Properties.Settings.Default.RunNumber++;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
我选择这个的部分原因是该值也被放入app.config文件中:
<setting name="RunNumber" serializeAs="String">
<value>0</value>
</setting>
Run Code Online (Sandbox Code Playgroud)
这意味着如果RunNumber必须意外增加,它可以在app.config中更改:
<setting name="RunNumber" serializeAs="String">
<value>10</value>
</setting>
Run Code Online (Sandbox Code Playgroud)
我的期望是,下次我的应用程序读取RunNumber的值时,它将采用app.config中设置的值(在本例中为10).这不会发生,而是在下次运行应用程序时,它将使用它最后修改的值,在这种情况下,运行编号将是1而不是我期望的10.
我的应用程序访问RunNumber的值,如下所示:
Properties.Settings.Default.RunNumber
Run Code Online (Sandbox Code Playgroud)
如何在不修改应用程序的情况下更改RunNumber的值?想法是,如果需要将其意外更改为值,我只需修改app.config中的值,而不必更改某些代码并重新部署应用程序.
被放置在该值app.config是默认使用时,一个新的用户使用你的应用程序和他的设置需要创建.在运行应用程序之后,user.config将创建一个a 来存储用户范围设置.
为了手动更改值,您需要user.config在用户配置文件目录中的相应位置执行此操作,因为如果您app.config只更改新用户将看到更改.
在没有漫游配置文件的Windows 7和名为的Windows窗体应用程序中,Example.Settings.CustomClass我获取了user.config的以下文件夹:
C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0
Run Code Online (Sandbox Code Playgroud)