前回、INIファイルに変わる環境設定の保存方法としてMy.Settingsオブジェクトを紹介した。前々回では、自アプリケーションのバージョン取得について紹介した。
今回のTipsでは、この2つのTipsが関係するちょっと困った現象とその回避策をとりあげる。
この現象に気付いたのは出来上がったプログラムを納品したときだった。
バグが見つかったため修正してプログラム本体だけをコピーして起動させたところ、修正箇所とは関係ないところでエラーを起こした。
原因はMy.Settingsオブジェクトで管理している設定内容がきれいさっぱり消えていたためである。なぜクリアされたのか。いろいろ調べた結果アセンブリバージョンを変更するとMy.Settingsの全項目が初期化されることを発見した。さらに、アセンブリバージョン情報には
AssemblyVersionと
AssemblyFileVersionの2つがあり後者の
AssemblyFileVersionを変更してもMy.Settingsの内容は初期化されないことも判った。
顧客に最新版であることを示す目的でフォームにバージョン情報を表示させているのだが、この情報が前々回Tipsで紹介した
My.Application.Info.VersionではAssemblyVersionの方なのである。このため、バージョンを変更するたびに毎回環境設定を行わなくてはならないことになってしまう。これでは使い勝手が悪すぎるのでフォーム上のバージョンには
AssemblyFileVersionを表示させ、
AssemblyVersionは変更しないようにすることにした。
アセンブリ情報ダイアログ

ファイルのプロパティ

サンプルプログラムの画面とソース

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Label1.Text = "AssemblyVersion : " & _
My.Application.Info.Version.ToString
Label2.Text = "AssemblyFileVersion : " & _
Application.ProductVersion.ToString
End Sub
posted by なっちゃん at 15:07| 静岡

|
Comment(0)
|
TrackBack(0)
|
VB.NET Tips
|

|