在运行时更改app.config

时间:2009-10-09 06:46:16

标签: .net log4net app-config

我目前正在尝试在运行时创建app.config。基本思想是我正在部署几个配置文件,并且基于环境变量,应用程序本身决定使用哪个。

目前我正在将我想要使用的配置文件复制到myapp.exe.config,并刷新所有部分。 我面临的问题是,log4net似乎搞砸了东西,但只是在发布版本中(因为静态字段是在不同的时间启动的)。

我明确地不想在构建时决定使用哪个配置。

任何想法(可能有更好的方法)?

TIA 马丁

3 个答案:

答案 0 :(得分:1)

您可以在确定要使用的配置并使用XmlConfigurator.Configure(new System.IO.FileInfo(“Filename.config”))将其复制到位后配置log4net。

答案 1 :(得分:0)

启动时是否可以在一个AppDomain内完成所有复制 - AppDomain使用任何设置 - 然后启动真实应用程序新的AppDomain?哎呀,作为替代方案,可以为此设置单独的进程吗?一个引导过程只会确保正确的配置到位,然后启动真正的应用程序。

在这两种解决方案中,您可以在真正使用任何设置之前完成所需的一切,这样可以使事情变得更简单。

请注意,静态初始化可以通过静态构造函数的存在与否来控制到某些范围 - 有关更多详细信息,请参阅my article on beforefieldinit。我不建议使用它来修复你当前的系统 - 在维护代码时它最终会非常脆弱。

答案 2 :(得分:0)

您是否可以使用Application Settings而不是配置文件?如果这不是用户需要更改的内容,那么最好提出几组内部作用域设置并在它们之间进行切换。