我目前正在尝试在运行时创建app.config。基本思想是我正在部署几个配置文件,并且基于环境变量,应用程序本身决定使用哪个。
目前我正在将我想要使用的配置文件复制到myapp.exe.config,并刷新所有部分。 我面临的问题是,log4net似乎搞砸了东西,但只是在发布版本中(因为静态字段是在不同的时间启动的)。
我明确地不想在构建时决定使用哪个配置。
任何想法(可能有更好的方法)?
TIA 马丁
答案 0 :(得分:1)
您可以在确定要使用的配置并使用XmlConfigurator.Configure(new System.IO.FileInfo(“Filename.config”))将其复制到位后配置log4net。
答案 1 :(得分:0)
启动时是否可以在一个AppDomain
内完成所有复制 - AppDomain
不使用任何设置 - 然后启动真实应用程序新的AppDomain
?哎呀,作为替代方案,可以为此设置单独的进程吗?一个引导过程只会确保正确的配置到位,然后启动真正的应用程序。
在这两种解决方案中,您可以在真正使用任何设置之前完成所需的一切,这样可以使事情变得更简单。
请注意,静态初始化可以通过静态构造函数的存在与否来控制到某些范围 - 有关更多详细信息,请参阅my article on beforefieldinit。我不建议使用它来修复你当前的系统 - 在维护代码时它最终会非常脆弱。
答案 2 :(得分:0)
您是否可以使用Application Settings而不是配置文件?如果这不是用户需要更改的内容,那么最好提出几组内部作用域设置并在它们之间进行切换。