【问题标题】:My App.Config file isn't saving anything I modify我的 App.Config 文件没有保存我修改的任何内容
【发布时间】:2009-08-16 05:09:36
【问题描述】:

这是我的代码:

public void VerifyIfFirstTimeRun()
    {
        if (System.Configuration.ConfigurationSettings.AppSettings["FirstTimeRunning"] == "true")
        {
            //Do bla bla bla
            //Then do bla bla bla
            System.Configuration.ConfigurationSettings.AppSettings["FirstTimeRunning"] = "false";     
        }            
    }

问题是,我正在使用 F5 键对其进行测试,它启动并使用断点确定它确实在 If 条件内,但是当我“停止”应用程序并再次按 F5 时它会运行在 If 条件 AGAIN 中。这是标准的操作程序吗?

如果是这样,我如何测试它是否工作?

【问题讨论】:

    标签: c# app-config


    【解决方案1】:

    这违背了 App.config 文件的用途......但要回答您的问题,您需要执行 System.Configuration.Configuration.Save()。

    编辑:
    App.config 通常用于配置数据库连接、提供程序等。通常在安装时设置一次。建议将用户设置放入单独的配置文件 user.config。说明见this

    编辑:
    System.Configuration.Configuration 类。

    注意 - 既然我已经了解了您使用这些设置的原因,我可以建议另一种方法吗?您可能应该只检查文件是否存在:

    if (!File.Exists("thefilepath"))
    {
        AlertUserOfMissingFile();
        ChooseNewFile();
    }
    

    无论如何,这种方式更安全,因为将设置设置为 true 并不一定意味着文件就在您认为的位置。

    【讨论】:

    • 天哪!好吧,我是来学习的:P 你能解释一下 App.config 文件的实际用途吗?我的印象是这是它的用途。
    • 它用于提供应用程序级别的设置。如果你想要每个用户的设置,你应该在你的项目中添加一个 Settings 类,将相关属性定义为用户属性,并按照 @Marc 的建议通过 Settings 类与它们交互。
    • 好吧,我的小应用程序只会检查它是否是第一次启动,只是因为我想确保最终用户使用我稍后将使用的 FileDialog 选择一个文件。在这种情况下,我认为不需要用户特定的设置,我可以为此使用 App.Config 文件吗?此外,关于 Xanadont 的回答,“System.Configuration.Configuration.Save()”不存在。智能感知中不存在第二个“.Configuration”。你确定你写的正确吗?非常感谢所有的帮助。
    • 如何确定用户具有修改 app.config 文件的适当权限?您唯一可以保证的是用户可以保存自己的设置。使用每个用户的设置不会有任何伤害,因为每个用户可能都必须进行选择。如果您只有一个用户,它仍然有效。
    • 好的,我会听从你的建议的。你介意给我指出正确的方向吗?我可以阅读有关每用户设置的链接或教程?非常感谢。 :)
    【解决方案2】:

    我不确定你是否应该期望保存这个;但是,您可以在 user's 上下文中拥有一个设置文件(在这种情况下为 bool),该设置文件通过 Settings.Default.Save() 保存(当您要求时)。

    【讨论】:

      【解决方案3】:

      我不建议您为此目的使用 App.settings。 看看这篇文章 Settings in C#

      1. 在解决方案资源管理器中,展开项目的“属性”节点。
      2. 在解决方案资源管理器中,双击要在其中添加新设置的 .settings 文件。此文件的默认名称是 Settings.settings。
      3. 在设置设计器中,为您的设置设置名称、类型、范围和值。每行代表一个设置。图 1 显示了设置设计器的示例。

      如果要在应用程序会话之间对用户设置的更改进行持久化,请调用 Save 方法,如下代码所示:

      Properties.Settings.Default.Save();
      

      【讨论】:

        猜你喜欢
        • 2015-11-10
        • 2012-02-19
        • 2012-01-31
        • 2015-10-03
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        相关资源
        最近更新 更多