【问题标题】:What is the best way to keep app.config and app.vshost.config synchronized? (or extend ConfigurationManager)保持 app.config 和 app.vshost.config 同步的最佳方法是什么? (或扩展 ConfigurationManager)
【发布时间】:2011-01-20 18:36:56
【问题描述】:

在 Stack Overflow(以及 Internet 的其余部分)中有很多关于如何读取/写入 app.config 的示例。但是答案并不一致,而且问题和答案通常都没有表明调试过程中可能会将数据保存在app.vshost.config中。

一些答案​​甚至建议使用 XMLReader/XMLWriter 来执行此操作,不应该正确答案,因为为此目的有一个专门的 Configuration 类。

我的测试(下面的代码)表明,ConfigurationManager 在调试期间发生在app.vshost.config 上,在正常运行时发生在app.config 上。

我理解为什么会发生这种情况,但我想找到一种在调试而不是调试时读取/写入配置文件的标准方法。也许这需要反思,也许这需要在两个位置写入数据。

无论哪种方式,我都不想让我的测试人员同时查看 app.config 和 app.vshost.config;我想为所有使用配置的组件(WCF 绑定、跟踪、Log4Net 等)标准化固定行为

一个非标准的实现可能 当应用程序硬编码时发生 配置文件的路径和名称 读书。然后,在调试过程中, 可能会读取错误的配置文件或 更新了。

我的工作代码如下(虽然很多人认为它不起作用):

        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        config.AppSettings.Settings.Remove("AgentID1");
        config.AppSettings.Settings.Add("AgentID1", "test12");
        config.Save(ConfigurationSaveMode.Full);

【问题讨论】:

  • aack...这解释了为什么我认为 ConfigurationManager 坏了

标签: c# debugging configuration configuration-files appsettings


【解决方案1】:

可能最简单的方法是在调试时简单地禁用 Visual Studio 托管进程 (Project properties - Debug - uncheck Enable Visual Studio hosting process)。

【讨论】:

  • 托管过程有什么好处?
  • 根据 MSDN:“Visual Studio 托管进程提高了调试器性能并启用了新的调试器功能,例如部分信任调试和设计时表达式评估。” (msdn.microsoft.com/en-us/library/ms242202.aspx)。老实说,你可能不需要它。
猜你喜欢
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 2019-09-01
相关资源
最近更新 更多