C# の新しい項目の追加で情報ボックスを追加します。
標準の情報ボックス
あっという間に情報ダイアログが生成されて便利便利…と思ってたのですが、リリースパッケージを発行した状態で情報ダイアログを表示しようとすると落ちてしまうのです。
※ 最新の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 のところで落ちます。

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画像コンバータは完成して現在動作の最終検証中です。近々公開しますデス。


【広告】
PC/PS5/PS4/Nintendo Switchコントローラー変換アダプター PS5 /PS4/ Switch Pro / Xbox Series X|S / Xbox One X|S / XBOX Elite シリーズ 2 コントローラー対応 無線接続 レシーバー コンバーター 遅延なし ジャイロ/振動/TURBO連射 ジョイスティック校正 日本語取扱説明書
BIGBIG WON
※ これは怪しいw 怪しすぎるが心惹かれますよねwww