【问题标题】:How to modify the App.Config section value如何修改 App.Config 部分的值
【发布时间】:2015-01-09 01:24:23
【问题描述】:

我有一个如下所示的 app.config,

<configuration>
    <environment>
        <add key="security" value="1"/> -- I want to change this value to 3
    </environment>
</configuration>

我尝试如下进入环境部分,

Configuration config = ConfigurationManager.OpenExeConfiguration(exePath);
var environment = config.GetSection("environment");

环境变量没有给我足够的选项来让子元素修改值。任何人都可以帮我解决这个问题。

【问题讨论】:

  • this问题
  • environment 配置部分的类型是什么?
  • @Oded 它没有任何类型。

标签: c# .net app-config


【解决方案1】:

使用用户范围设置!!永远不要以这种方式更改应用程序配置。在应用程序中更改的任何值都应该是用户设置。

通常,您可以通过

访问这些设置
Properties.Settings.Default.MyConfigurationValue = ....;
Properties.Settings.Default.Save();

编辑
执行我在 cmets 中编写的示例。创建两个用户设置:FirstRunbool,默认设置为 trueEnvironment 是您的值,默认设置为 0

然后,例如在Program.cs 中的Main 函数中,您将执行以下操作:

if (Properties.Settings.Default.FirstRun)
{
    Properties.Settings.Default.FirstRun = false;
    if (myConditionIsTrue)
        Properties.Settings.Default.Environment = 3;
    Properties.Settings.Default.Save();
}

稍后在您的应用程序中使用Properties.Settings.Default.Environment 就足够了。如果您想从应用程序更改配置值,这就是设置机制的用途。

在 Windows 2000、XP、7 和 Windows Server 分支下,您甚至无权修改 Program Files 文件夹中的 app.config,所以不要!

【讨论】:

  • 但就我而言,我想修改该值。我正在根据某些条件在应用程序安装时修改它们。
  • 条件是什么?正确的方法是让用户设置提供默认值。然后在第一次运行应用程序时,根据条件确定正确的值。如果您使用的是在复制到用户系统之前修改配置文件的设置应用程序,情况可能会有所不同。在这种情况下,您谈论的是修改一个简单的 XML 文件,这与设置机制完全无关。如果你想使用设置机制,你应该正确使用它们。
  • 在安装时我需要查询注册表并读取一个特定的值,将该值放入 app.config 中。我正在使用 Installer 类来实现这一点。是的,我正在使用设置应用程序。
  • 好吧,那真的不是使用ConfigurationManager读取配置文件的问题。然后,您可以像对待任何其他 XML 文件一样处理该文件,并使用例如 XmlDocument 对其进行修改。但是,我不明白为什么您不能使用我在编辑中建议的机制 - 在您的代码中阅读注册表也应该没问题。为什么需要在安装时完成?
  • 好的,谢谢 Thorsten,我会尝试 XmlDocument 方式(这对我来说似乎更简单)。
猜你喜欢
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
相关资源
最近更新 更多