2009-08-04 14 views

答えて

12

さて、私が本当に探していた答えを見つけました。基本的には、LocalFileSettingsProvider.Upgradeを呼び出す必要があります。しかし、私はClickOnceを使って展開するので、自動的にあなたのためにそれを行います。


Q:どういう場合にアップグレードを呼び出すのか分かりますか?

A:良い質問です。 Clickonceでは、アプリケーションの新しいバージョンをインストールすると、ApplicationSettingsBaseがそれを検出し、設定がロードされた時点で自動的に設定をアップグレードします。 Clickonce以外のケースでは、自動アップグレードはありません。あなた自身でアップグレードを呼び出す必要があります。

CallUpgradeというブール値を設定し、それにデフォルト値のtrueを設定します。 ()そのアップグレードを保証します

if (Properties.Settings.Value.CallUpgrade) 
{ 
    Properties.Settings.Value.Upgrade(); 
    Properties.Settings.Value.CallUpgrade = false; 
} 

この新しいバージョンが展開された後、アプリケーションが実行される初回のみ呼び出されます:あなたのアプリが起動すると、次のような何かを行うことができます。

REF:http://blogs.msdn.com/rprabhu/articles/433979.aspx

0

私の頭の上では、プロジェクトのビルド/実行時にファイルのプロパティ(Visual Studioの右クリック、プロパティ)で「コピーしない」オプションを設定できると思います。おそらくあなたのプロジェクトがビルドされ、設定ファイルがデバッグbinディレクトリにコピーされ、前回の実行時の設定ファイルが上書きされます。

+1

私はそのオプションをチェックしましたが、すでに "コピーしない"に設定されています。 – Lenard

2

私は、現在のバージョン番号に基づいて、基本的に設定がマシン上の同じプログラムの異なるバージョン間で保存されない「機能」として、Settings.settingsファイルが保存されていると信じています。コンパイル時に自動的にバージョン番号を増やしていると仮定すると(AssemblyInfo.csの1.0。*)、新しいバージョンをコンパイルするたびに設定がリセットされます。

これを修正するには、独自の設定ファイルをApplication Dataディレクトリにシリアル化することをおすすめします。

+1

これがMicrosoftの機能とはどういうものかはっきりしていません。マイクロソフトがソフトウェアを更新するたびに、そこにあるすべての苦情は想像できますか?なぜ彼らは "私たち"の開発者にとってそれが違うと思いますか? :) お返事をありがとうございます! – Lenard

+0

バージョン番号を手動で更新しても問題ありません。最終的な結果として、ユーザーはソフトウェアのバージョン1.0,1.5,1.7、および2.0をインストールでき、それぞれ固有の設定が保存されます。これらの4つのアプリケーション間で設定を共有するには、自分の設定ファイルを共有場所に保存する必要があります。 –

+0

MSが提供するアプリケーション設定機能の動作が一度も好きではありませんでした。そこにはフレームワークがたくさんあるように思えるので恥ずかしいですが、私は自分の料理を簡単に作ることが簡単です。 – AaronLS

0

他の理由の中で、設定ファイル保ちなっ単に次回のデバッグは、あなたがもう一度アプリケーション全体をテストすることができますので、あなたのデバッグたびにリセット。設定をリセットしないと、検出されないバグが発生する可能性があります。

関連する問題