.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"]的外观。