1. ホーム
  2. .net

[解決済み] .netで異なるアセンブリのバージョン間でuser.configの設定を維持するにはどうすればよいですか?

2022-04-27 18:09:17

質問

基本的に問題は、アセンブリのバージョンが変わる(つまり、ユーザーがアプリケーションの新しいバージョンをインストールする)たびに、すべての設定がデフォルトにリセットされることです(より正確には、異なるバージョン番号を名前とするフォルダに新しい user.config ファイルが作成される)。

iniファイルやレジストリの使用は推奨されていないようですが、バージョンアップの際に同じ設定を維持するにはどうしたらよいでしょうか?

Clickonceを使ったときは対応できたようなので、できそうな気がするのですが、どうなんでしょう。

解決方法は?

ApplicationSettingsBaseには というメソッドがあり、Upgrade これは、以前のバージョンからすべての設定を移行するものです。

アプリケーションの新バージョンを公開するたびにマージを実行するには、設定ファイルにデフォルトが true のブーリアン・フラグを定義することができます。このフラグの名前は アップグレードの必要性 のようなものです。

そして、アプリケーションの起動時にこのフラグが設定されているかどうかを確認し、設定されている場合は アップグレードメソッド フラグを false に設定し、設定を保存します。

if (Settings.Default.UpgradeRequired)
{
    Settings.Default.Upgrade();
    Settings.Default.UpgradeRequired = false;
    Settings.Default.Save();
}

Upgradeメソッドの詳細については、以下を参照してください。 MSDN . その 前のバージョンを取得する また、カスタムマージを行う必要がある場合は、一見の価値があるかもしれません。