7

有什么方法可以在运行时指定我想使用的配置文件(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 部分,我的应用程序不应该写任何东西。

4

4 回答 4

9

我发现了这个并且它有效。“路径”是配置文件的路径。

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", path);
于 2009-02-11T11:19:24.597 回答
4

不是直接的。

间接地,您可以:

  • 启动第二个AppDomain,为该 ( AppDomainSetup.ConfigurationFile) 指定配置文件,然后在应用程序域中执行代码
  • 有两个前任;第一个 ( foo.exe) 只是复制配置 ( 到bar.exe.config) 并壳第二个 exe ( bar.exe) [警告:线程竞争]
于 2009-02-10T11:23:18.060 回答
0

如果您使用 log4net,您可以在 AssemblyInfo.cs 中指定您的配置文件

于 2009-02-10T11:28:26.813 回答
0

另一种解决方案是重构并创建自己的ConfigurationRepository. 然后您可以在运行时更改您将使用的特定存储库实现。

例如,AppConfigRepository : ConfigurationRespository将只是旧的外观ConfigurationManager.AppSettings["key"]

于 2009-02-10T11:38:38.210 回答