別のアプリケーションの App.config ファイルの簡単な AppSetting を変更し、その変更を保存できる小さなユーティリティを作成しました。
//save a backup copy first.
var cfg = ConfigurationManager.OpenExeConfiguration(pathToExeFile);
cfg.SaveAs(cfg.FilePath + "." + DateTime.Now.ToFileTime() + ".bak");
//reopen the original config again and update it.
cfg = ConfigurationManager.OpenExeConfiguration(pathToExeFile);
var setting = cfg.AppSettings.Settings[keyName];
setting.Value = newValue;
//save the changed configuration.
cfg.Save(ConfigurationSaveMode.Full);
これは、1 つの副作用を除けば、うまく機能します。新しく保存された .config ファイルでは、元の XML コメントがすべて失われますが、失われるのは AppSettings 領域内のみです。元の構成ファイルの AppSettings 領域から XML コメントを保持することは可能ですか?
ベストアンサー1
Reflector.Net にアクセスして、このクラスの逆コンパイルされたソースを確認しました。簡単に答えると、いいえ、コメントは保持されません。Microsoft がクラスを記述した方法は、構成クラスのプロパティから XML ドキュメントを生成するというものです。コメントは構成クラスに表示されないため、XML には反映されません。
さらに悪いことに、Microsoft はこれらすべてのクラスを封印しているため、新しいクラスを派生させて独自の実装を挿入することはできません。唯一の選択肢は、コメントを AppSettings セクションの外に移動するか、代わりにクラスを使用してXmlDocument
構成XDocument
ファイルを解析することです。
申し訳ありません。これは、Microsoft が想定していなかった特殊なケースです。