10

C#.NET2.0Windowsアプリケーションを使用しています。

アプリケーション設定にapp.configを使用しています。

ただし、AppSettingsの変更はランタイムを反映していないため、アプリケーションを再起動する必要があります。

どうすればそれを回避できますか。

これは、アプリケーション設定の読み取りと書き込みに使用したコードスニペットです。

私はこのような設定を読んでいます

string temp = ConfigurationManager.AppSettings.Get(key);

ノードが現在の構成/appSettingsノードであるこのような値を更新しています

node.Attributes["value"].Value = value;
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
4

4 に答える 4

23

あなたは電話してみることができます

ConfigurationManager.RefreshSection("appSettings")
ディスクからファイルのAppSettingsセクションを更新します。それらが更新されると、新しい値を読み取ることができるはずです。

私はこれをテストしたばかりで、実際に機能します。

于 2009-08-10T12:50:51.480 に答える
3

または、シングルトンの「オプション」を作成して、アプリケーション設定を保持し、読み取り/書き込みを実行することもできます。ロードされたら、.configを変更するのにリロードする必要はありません。シングルトンにプロパティを設定し、.Save()メソッドを呼び出すだけです。

設定の「ランタイム」バージョンはシングルトンであり、ディスクから読み取る必要はありません。

于 2009-08-10T13:01:25.400 に答える
1

ConfigurationManagerを使用して設定を読み取るのではなく、次を使用してください。

        System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"];
于 2009-08-10T12:55:18.457 に答える
1
ConfigurationManager.RefreshSection("appSettings");

動作します!

ただし、デバッグモードの場合、構成ファイルはxxxxx.vshost.exe.configという名前になる可能性があることに注意してください。ここで、xxxxxはプロジェクト名です。

于 2015-10-05T12:31:08.133 に答える