【问题标题】:How to change in runtime application settings如何更改运行时应用程序设置
【发布时间】:2013-05-08 02:08:59
【问题描述】:

我试图在运行时更改我的应用程序设置文件的一个键,但它不起作用。

我就是这样做的:

ConfigurationSettings.AppSettings["XPTO"] = "HELLO";

好像只在内存中改变,文件上没有。

有人知道怎么做吗?

谢谢。

【问题讨论】:

    标签: c# .net settings.settings


    【解决方案1】:

    看看我的overview of .NET settings files...简而言之,我认为您需要一个用户范围的设置。它的行为会更符合您的预期。

    编辑:如果您使用的是settings designer in Visual Studio,则只需将“范围”更改为“用户”。如果没有,您应该能够以编程方式执行等效操作。

    【讨论】:

    • 请注意,更改设置和保存时,设置不会在bin文件夹中更改,而是在[用户文件夹]\本地设置\应用程序数据\[公司名称]\[应用程序] .exe[哈希字符串]\[版本]\user.config
    • 在较新的 Windows 版本中,它将在 [userfolder]\AppData\Local\[company name]\[application].exe[hash string]\[version]\user.config 上更改/跨度>
    • @Jader 是的。我确实在概述中简要提到了这一点,并提供了检索结果路径的编程方法。但是感谢您分享这些详细信息。
    【解决方案2】:

    假设您的应用对文件具有写入权限...

    
    
        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  // the config that applies to all users
        AppSettingsSection appSettings = config.AppSettings;
    
        if (appSettings.IsReadOnly() == false)
        {
            appSettings("Key").Value = "new value";
    
            config.Save();
        }
    

    我忽略了所有可能引发的异常......

    【讨论】:

    • 如何访问 ConfigurationManager 类。我尝试使用这段代码,它会导致一些不知道该类的错误:S.
    • 添加 System.Configuration 作为参考。
    【解决方案3】:

    AppSettings 文件并非设计为可写的。它旨在存储在运行时不会更改但可能随时间更改的配置,即:数据库连接字符串、Web 服务 URL 等。

    因此,虽然实际上可能会更新文件,但您应该重新评估该值是否应该存储在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多