.NET自己的配置文件

时间:2009-02-10 11:06:31

标签: c# .net app-config

有什么方法可以在运行时指定我想要使用的配置文件(除了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 个答案:

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