2016-10-24 13 views
0

私は組み込みの設定機能を使用するWPFアプリケーションを持っています。私は、アプリケーションの新しいバージョンをリリースすると、私は、アセンブリのバージョンを高め、アプリケーションの起動時に次のコードを実行します。Settings.Default.Upgrade()は現在の設定を保持しません

if (Settings.Default.IsSettingsUpgradeRequired) //this defaults to true when a new version of this software has been released 
      { 
       Settings.Default.Upgrade(); //upgrade the settings to the newer version 
       Settings.Default.Reload(); 
       Settings.Default.IsSettingsUpgradeRequired = false; 
       Settings.Default.LastSettingsUpdate = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); 
       Settings.Default.Save(); 
      } 

問題は、以前の設定が維持されていないということです。新しいバージョンが登場するたびに、\ AppData \ Local \の下に新しいフォルダが作成されます。したがって、以前のバージョンのデフォルト設定の代わりにデフォルト設定が使用されます。通常の状況下では、アプリケーションのバージョンが名前である多数のサブフォルダを含む1つのフォルダが存在するはずです。代わりに、私はそれぞれがアプリケーションのバージョンを名前として持つ1つのフォルダのみを含む多くのフォルダを持っています。 ローカル\にあるフォルダ構造は次のようになります。

  • myApp.exe_Url_5s2axp5sywfyhblm3201qetpqnmwnvsc
  • myApp.exe_Url_ft4ih1ze0qsz5a​​bu11t334omxo1431c0
  • myApp.exe_Url_glsc2d3cjmswry2bxebb53jndfptav1x
  • myApp.exe_Url_qngn1rqmbfyy42fdgpmc3ystsaknuxnv
  • myApp.exe_Url_vqn0ogftrchl1fild5fe34hmijvmd2zr

どのように私は設定を適切にアップグレードできるように、非常に多くのフォルダを作成し、アプリケーションごとに1つのフォルダのみを使用するようにシステムを停止するのですか?

編集:最初に起動したときに、アプリケーションが新しい設定フォルダを作成します。私は今日気づいた他の事は、私は(\ MyApp]をCに、デスクトップからそれを動かす言うことができます)アプリケーションのフォルダの場所を変更した場合ということです。システムがそれを同じアプリケーションとして認識しないのはなぜですか?

+0

>署名を)、およびそれOKです。削除してください。 –

+0

既に試しましたが、何も変更されません。問題は、それが同じアプリケーションであることを認識しない場合、システムが各ソフトウェアバージョン用の新しいアプリケーションフォルダを作成することです... – Cleo

+0

多分、マニフェストファイルを持っている/持たないことと関係がありますか? または、アプリケーションに署名する必要がありますか? – Cleo

答えて

0

私はついにそれを動作させました。私はdesrcibedの行動の原因を知りませんが、これらの2つのことの一つは、それを固定:

  • は、デフォルトのマニフェストファイルを追加し、「assemblyIdentity」ノード(「バージョン」属性は持っていないように変更しました設定への影響は)
  • は、Visual Studioの署名機能(プロジェクトのプロパティ活性化 - 私は設定を更新するために使用するコードに ``リロード()を使用していない
関連する問題