.NET自己的配置文件
有没有什么方法可以在运行时指定我想要使用的配置文件(除了App.config)? 例如,我想从命令行读取第一个参数,该命令行将是应用程序配置的路径,我希望我的应用程序在使用ConfigurationManager.AppSettings时引用它(这可能是不可能的,但仍然值得一提)。
我找到了这段代码:
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.File = myRuntimeConfigFilePath; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");
它工作,但它覆盖了原始的App.config的AppSettings部分,我的应用程序不应该写任何东西。
我发现了这个并且它有效。 “path”是配置文件的路径。
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", path);
不是直接的。
间接地,您可以:
- 启动第二个
AppDomain
,为其指定配置文件(AppDomainSetup.ConfigurationFile
),并在app域中执行代码 - 有两个前任; 第一个(
foo.exe
)只是复制配置(到bar.exe.config
)并bar.exe.config
第二个exe(bar.exe
)[警告:线程竞赛]
如果您使用的是log4net,则可以在AssemblyInfo.cs中指定配置文件
另一种解决方案是重构并创建自己的ConfigurationRepository
。 然后,您可以在运行时更改将使用的特定存储库实现。
例如, AppConfigRepository : ConfigurationRespository
将只是旧ConfigurationManager.AppSettings["key"]
的外观。