保持app.config和app.vshost.config同步的最佳方法是什么? (或扩展ConfigurationManager)

时间:2011-01-20 18:36:57

标签: c# debugging configuration configuration-files appsettings

有很多关于如何在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);

1 个答案:

答案 0 :(得分:3)

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