13

独自のApp.configを持つコンソールアプリケーションがあります。

セクション内のいくつかの値を時々変更する必要があります。

私の問題は、bin / debugフォルダー内でexeを実行すると、関連するアプリ設定が正しく取得されることです。しかし、いくつかのキーと値のペアの値を編集および変更してexeを再実行すると、元の値が読み取られます。

(再実行とは、MyTool.exeを呼び出してコマンドpromtでアプリケーションを実行することを意味します)

電話してみた

ConfigurationManager.RefreshSection("appSettings");

私のメインメソッドの冒頭で。しかし、助けにはならなかった。

あなたがアドバイスしていただけますか?ありがとう

4

2 に答える 2

38

しかし、いくつかのキーと値のペアの値を編集および変更してexeを再実行すると、元の値が読み取られます。

このexeを再実行する方法によって異なります。Visual Studioでこれを行う場合は、を押すことによりF5、VSはプロジェクト内のapp.configファイルを出力にコピーし、名前をに変更しAppName.exe.configます。したがって、変更を考慮に入れる場合は、AppName.exe.config(ではなくApp.config)変更してから、Windowsエクスプローラーから実行可能ファイルを実行する必要があります。

そうは言っても、App.configの読み取りと解析は1回だけです。アプリケーションが起動したとき。次に、アプリケーションが何らかの値を要求するたびに高価なXML解析を回避するために、値がキャッシュされます。

App.configは、変更されるべきではない構成値を格納するように設計されています。構成値を動的に変更する必要がある場合は、ファイル、データベース、...などの他のストレージメカニズムを使用する必要があります。

しかし、このConfigurationManager.RefreshSection("appSettings");方法は機能するはずです。ファイルを変更したらAppName.exe.config、このメソッドを呼び出してから、必要な値を再フェッチしますConfigurationManager.AppSettings["someKey"];。これにより、新しい値が返されます。

于 2012-07-13T08:41:00.683 に答える