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

直接ではありません。

間接的に、次のことができます。

  • 1 秒スピンアップし、AppDomainその構成ファイルを指定して ( AppDomainSetup.ConfigurationFile)、アプリ ドメインでコードを実行します。
  • 2つのexeがあります。最初の ( foo.exe) は単に構成を (に) コピーしbar.exe.config、2 番目の 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 に答える