C# の新しい項目の追加で情報ボックスを追加します。

あっという間に情報ダイアログが生成されて便利便利…と思ってたのですが、リリースパッケージを発行した状態で情報ダイアログを表示しようとすると落ちてしまうのです。
※ 最新のVS2022では修正されているかもですが…
あっという間に情報ダイアログが生成されて便利便利…と思ってたのですが、リリースパッケージを発行した状態で情報ダイアログを表示しようとすると落ちてしまうのです。
※ 最新のVS2022では修正されているかもですが…
なぜかなあと、今度は自前でバージョン情報ダイアログを作ったのですが、やっぱり同じように落ちてしまいました。ネット検索するとよく出てくる、以下のような単純なプログラムです。
var asm = System.Reflection.Assembly.GetExecutingAssembly(); var ver = FileVersionInfo.GetVersionInfo(asm.Location); LbVersion.Text = $"Version {ver.ProductVersion} ( {ver.FileVersion} )"; LbCopyright.Text = $"{ver.LegalCopyright}";
そこで、一体どうして落ちているのか調査してみたところ、asm.Location に値が何も入ってないのです。そりゃ落ちるわと言うところなのですが、これでは困るので対策を考えてみました。asm.Location は結局は自分のパスなので、だったら別の方法でパスを取得すれば良いかと、以下のように書き換えてみました。
string path = Application.ExecutablePath; var ver = FileVersionInfo.GetVersionInfo(path); LbVersion.Text = $"Version {ver.ProductVersion} ( {ver.FileVersion} )"; LbCopyright.Text = $"{ver.LegalCopyright}";
これで無事にバージョン情報ダイアログは表示されるようになりました。

C# の追加で作成できる情報ポックスも、以下のようなプログラムとして出力されています。同様に assembly.Location のところで落ちます。
C# の追加で作成できる情報ポックスも、以下のようなプログラムとして出力されています。同様に assembly.Location のところで落ちます。
public static string AssemblyFileVersion { get { var assembly = Assembly.GetExecutingAssembly(); var fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location); return fileVersionInfo.FileVersion; } }
ここも同様に以下のように置き換えれば動作します。
public static string AssemblyFileVersion { get { string path = Application.ExecutablePath; var fileVersionInfo = FileVersionInfo.GetVersionInfo(path); return fileVersionInfo.FileVersion; } }
ちょっとした事ですが、何かの参考になれば幸いです。…自前実装のバージョン情報ダイアログのほうがかっこいいですね。やっぱり手抜きせずキチンと自前実装にしよう💦
※ P6画像コンバータは完成して現在動作の最終検証中です。近々公開しますデス。
コメント