【问题标题】:How do I change the value of a Settings.settings value如何更改 Settings.settings 值的值
【发布时间】:2011-07-06 17:24:09
【问题描述】:

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

所以我有一个名为 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 中的值,而不必更改一些代码并重新部署应用程序。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    app.config 中的值是默认,当新用户 使用您的应用程序并且需要创建他的设置时使用。运行应用程序一次后,将创建一个user.config 来存储用户范围设置。

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

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

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

    【讨论】:

      【解决方案2】:

      一个名为 RunNumber 的整数值,具有范围用户

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 我不认为你可以用 windows 任务调度器做到这一点。
        • 如果我理解正确的话,它只是一个由任务调度程序调用的常规控制台应用程序。在这种情况下,您可以手动调用该应用程序。 OP 建议这是一个偶尔编辑文件的手动过程 - 这种方法也会限制出错的可能性。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-15
          相关资源
          最近更新 更多