app.config ファイルのいくつかの設定を管理するための小さな GUI を作成しました。GUI は製品の一部としてリリースされており、app.config ファイルをテキスト エディターで開かなくても値を変更できます。
プロパティはカスタム configSection に実装され、コード内で厳密に型指定されます。私の問題は、app.config ファイルが更新されたとき (GUI から保存したとき)、アセンブリの完全修飾名が次のように configSection に書き込まれることです。
<section name="ConfigurationSettings" type="PerformanceDude.MSBuildShellExtension.Common.ConfigurationSettings, Common, Version=2.2.1.0, Culture=neutral, PublicKeyToken=1ab1b15115e63xxx" />
このアセンブリを新しいバージョン番号にアップグレードすると、GUI コード アセンブリのバージョンが app.config のアセンブリ参照と一致しなくなります。
これは私が設定をロードする方法です:
var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = ConfigFilePath }, ConfigurationUserLevel.None);
var settings = Config.GetSection("ConfigurationSettings") as ConfigurationSettings;
これは私が設定を保存する方法です:
config.Save(ConfigurationSaveMode.Minimal, true);
更新するたびにバージョンを変更するアップグレード スクリプトを書きたくありません。この問題の優れた解決策を知っている人はいますか?