有什么方法可以在运行时指定我想要使用的配置文件(除了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部分,我的应用程序不应该写任何东西。
答案 0 :(得分:9)
我发现了这个并且它有效。 “path”是配置文件的路径。
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", path);
答案 1 :(得分:4)
不直接。
间接地,您可以:
AppDomain
,为其指定配置文件(AppDomainSetup.ConfigurationFile
),然后执行应用域中的代码foo.exe
)只是复制配置(进入bar.exe.config
)并弹出第二个exe(bar.exe
)[警告:线程竞赛] 答案 2 :(得分:0)
如果您使用的是log4net,则可以在AssemblyInfo.cs中指定配置文件
答案 3 :(得分:0)
另一种解决方案是重构并创建自己的ConfigurationRepository
。然后,您可以在运行时更改将使用的特定存储库实现。
例如,AppConfigRepository : ConfigurationRespository
只是旧ConfigurationManager.AppSettings["key"]
的外观。