2009-07-29 3 views
24

私は自分のアプリをコンパイルしてバージョン番号を変更するたびに(私は自動増分ビルド番号を持っている)、特定のバージョンのAppDataフォルダに保存されているので、ユーザが設定したapp.config設定は失われます。基本的に、私のアプリケーションのすべてのリリースは、ユーザー設定が完了するまで、最初から開始されます。以前のバージョンのapp.configファイルからユーザー設定を自動的に「アップグレード」しますか?

これは開発の軽度な煩わしさですが、app.configを使用してユーザー設定を保存すると、展開/リリース - に近づくにつれて問題が発生します。ユーザーのパーソナライズされた設定は、私のアプリのバージョン番号を変更するパッチ?もしそうなら、以前のリリースから設定を "アップグレード"する簡単な方法はありますか?レジストリでHKCUを使用することも別の選択肢ですが、私はMy.Settings名前空間の使いやすさが好きで、app.configを使いたいと思います。

Another SO questionは同様の質問ですが、答えは明らかではありません。 MSIを設定して、ユーザーにこれらのユーザーレベルの設定を保存するのに十分なアップグレードを求めるようにしますか?

答えて

34

ApplicationSettingsBase.Upgrade()を見ましたか?これは、設定が次の呼び出しを使用して、以前のバージョンからアップグレードすることができます。

My.Settings.Upgrade() 
+5

これはまさに私が探していた動作です。最新の設定のコピーを取り出してロードします。また、ApplicationSettingsBase.GetPreviousVersionメソッドを使用して、以前のバージョンから単一の設定をロードすることもできます。ありがとう! – SqlRyan

1

ClickOnceの導入について考えましたか?このトピックについては、in depthを参照してください。 IMO、ClickOnceは、開発者とユーザーにとってはるかに簡単です。

+5

ClickOnceは機能しなくなるまで素晴らしいですし、デバッグするのはほとんど不可能です。私たちはそれを使用していましたが、私たちの制御から間違って行き過ぎる可能性のあるものが多すぎて、十分なログが残っていないので、ユーザーの手元にある "ランチャー"タイプのプログラムに置き換えました。 –

7

アップグレードコマンドまたは取得前のバージョンが、どちらも私のために働くように見える理由はわかりません。私は何が間違っていますか?私はリフレッシュコマンドなどを呼び出す必要がありますか?私はフォームロード時にこれをやっています、それはアプリケーションイベントですか?

UPDATE

あなたが4桁のメジャーバージョン番号を使用する場合、それは動作しないようですなぜ、分かりました。私は2012年をメジャーバージョン番号として使用していました。私はそれを12に変更しました。そしてそれは魅力のように機能しますが、千年対応ではありません。それでも私は88年前にそれを心配する必要があります!

関連する問題