XMLを使用してファイルを開いていますLINQ-to-XMLが、その前に、構成ファイルからOpenMappedExeConfigurationを取得するために使用していConnectionStringsSectionます。
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = exeConfigName;
System.Configuration.Configuration config =
ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);`
ConnectionStringsSection section = config.ConnectionStrings;
//Modify connection string...
の一部を変更した後ConnectionString、次の方法で構成ファイルを保存します。
config.Save();
を保存した後EXE configuration、ファイルを再度開いて、を介して他の部分を読み取りますが、ドキュメントLINQ-to-XMLを呼び出した後、変更が保存されていないように見えますが、で行った変更は保存されます。Save()ConnectionStringLINQ-to-XML
XDocument configFile = XDocument.Load(path);
//make changes to configFile
XDocument.Save(path);
EXE configurationコードをコードの下に移動する必要がありましたXDocument。ConnectionStringコードにヒットする前に、メモリ内で変更されていることがわかりXDocumentます。なぜこれが起こっているのかわかりませんが、XMLをメモリにロードし、それを保存し直すと、基本的に、自分で行ったすべての変更を上書きしているためconfig.Save()ですか?その場合、コードを並べ替えることなく変更を加える方法はありますか?