![](/img/trans.png)
[英]Settings.settings - How do I change from one environment to another?
[英]How do I change the value of a Settings.settings value
我有一个简单的控制台应用程序,它每天运行(由 windows 任务调度程序调用)并且取决于每次应用程序运行时递增的值。 为了保持这个值,我选择使用 Settings.Settings 文件。
所以我有一个名为 RunNumber 的 integer 值和 Scope 用户,每次应用程序完成运行时都会递增:
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 中的值,而不必更改一些代码并重新部署应用程序。
放置在app.config
中的值是新用户使用您的应用程序并且需要创建他的设置时使用的默认值。 运行应用程序后,将创建一个user.config
来存储用户 scope 设置。
为了让您手动更改值,您需要在相应的user.config
中执行此操作,您可以在用户配置文件目录中的某个位置找到该值,因为如果您更改app.config
,只有新用户会看到更改。
在没有漫游配置文件和 Windows Forms 应用程序名为Example.Settings.CustomClass
的 Windows 7 中,我正在为 user.config 获取以下文件夹:
C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0
一个名为 RunNumber 的 integer 值与 Scope 用户
用户 scope 表示实际值未保存在 App.config 中,而是保存在Users\<user>\AppData\...
文件夹下。
如果您的控制台应用程序在管理员帐户下运行(或未放置在程序文件中),您可以使用应用程序 scope 设置。
由于用户范围设置的值存储在用户文件中而不是 app.config 中,因此最好的方法可能是添加使用特定开关调用应用程序以重置所需值的功能。 例如myapp.exe /setcount=123
。
当然,您必须以适当的用户身份运行应用程序,以确保您在正确的文件中设置值。
只需在访问您的Settings
class 之前使用Reload() 。 您可以修改生成的Settings
class 以在每次访问特定属性时调用Reload
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.