我有一个简单的控制台应用程序,每天运行(由Windows任务调度程序调用),并依赖于每次应用程序运行时递增的值。为了保持这个值,我选择使用Settings.Settings文件。
所以我有一个带有Scope User的名为RunNumber的整数值,每次应用程序运行完毕时都会递增:
Properties.Settings.Default.RunNumber++;
Properties.Settings.Default.Save();
我选择此选项的部分原因是该值也会放入app.config文件中:
<setting name="RunNumber" serializeAs="String">
<value>0</value>
</setting>
这意味着如果RunNumber必须意外增加,它只能在app.config中更改:
<setting name="RunNumber" serializeAs="String">
<value>10</value>
</setting>
我的期望是,下次我的应用程序读取RunNumber的值时,它将采用app.config中设置的值(在本例中为10)。这不会发生,而是在下次运行应用程序时,它将使用上次修改的值,在这种情况下,运行编号将是1而不是我期望的10。
我的应用程序访问RunNumber的值,如下所示:
Properties.Settings.Default.RunNumber
如何在不修改应用程序的情况下更改RunNumber的值?想法是,如果需要将其意外更改为值,我只需修改app.config中的值,而不必更改某些代码并重新部署应用程序。
答案 0 :(得分:6)
当{strong>新用户使用您的应用程序并且需要创建其设置时,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
答案 1 :(得分:2)
带有范围用户
的名为RunNumber的整数值
用户范围表示实际值未保存在App.config中,而是保存在Users\<user>\AppData\...
文件夹下。
如果您的控制台应用程序在管理员帐户下运行(或未放置在程序文件中),则可以使用应用程序范围设置。
答案 2 :(得分:1)
由于用户范围设置的值存储在用户文件中而不是app.config中,因此最好的方法是添加使用特定开关调用应用程序以重置所需值的功能。例如myapp.exe /setcount=123
。
当然,您必须以适当的用户身份运行应用程序,以确保将值设置在正确的文件中。
答案 3 :(得分:0)
在访问Settings
课程之前,只需使用Reload()即可。
您可以修改生成的Settings
类,以便在每次访问特定属性时调用Reload
。