.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる手順を紹介します。
概要
.NETアプリケーションの実行ファイルは.NETのランタイムライブラリを参照していますが、どのバージョンを参照しているかを知りたい場合があります。
単純に実行して動作するかで確認する方法もありますが、複数の.NET ランタイムがマシンにインストールされている場合、どのランタイムバージョンを参照して
実行ファイルが起動したのかわからない場合もあります。
この記事では、実行バイナリファイルが参照する.NETのバージョンを調べる手順を紹介します。
事前準備
Visual Studioをインストールします。
手順
スタートメニューのVisual Studio のフォルダ内の[x64 Native Tools Command Prompt for VS 2022]のショートカットをクリックします。
Visual Studio のツール用のコマンドプロンプトのウィンドウが表示されます。
次のコマンドを入力して実行します。
コマンドを実行すると、下図のウィンドウが表示されます。
[ファイル]メニューの[開く]をクリックします。
ファイルを開くダイアログが表示されます。ビルドされた.NET アプリケーションの実行ファイルを選択します。
今回サンプルとして、.NET 7でビルドしたコンソールアプリケーションを準備しました。はじめに .exe ファイルを開いてみます。
exeファイルを開くと、有効なCLRヘッダを持っていないエラーが表示されます。exeファイルではなく、dllファイルのほうを開く必要がありそうです。
dllファイルを開くと、下図の画面に切り替わります。ウィンドウのツリービューの[MANIFEST]のノードをダブルクリックします。
ダブルクリックすると、ウィンドウが表示され、マニフェストの内容を確認できます。
.ver
の値が
7:0:0:0
になっており、この値で、この実行ファイルが .NET 7であることが確認できます。
.NET 7アプリケーションの場合
.NET 7アプリケーションを開くと、.ver の値が
7:0:0:0
となっています。
.NET 6アプリケーションの場合
.NET 6アプリケーションを開くと、.ver の値が
6:0:0:0
となっています。
.NET 5アプリケーションの場合
.NET 6アプリケーションを開くと、.ver の値が
5:0:0:0
となっています。
.NET Core 3.1アプリケーションの場合
.NET Core 3.1アプリケーションを開くと、.ver の値が
4:2:2:0
となっています。
.NET Core 3.0アプリケーションの場合
.NET Core 3.0アプリケーションを開くと、.ver の値が
4:2:1:0
となっています。
.NET Framework アプリケーションの場合
.NET Framework のアプリケーションの場合は、.ver の値が
4:0:0:0
になります。
.NET Framework のアプリケーションでバージョンを調べる場合は
TargetFrameworkAttribute
の値を確認します。
.NET Framework 4.8.1 の場合
MANIFESTの
TargetFrameworkAttribute
の項目の中に
.NET Framework, Version=v4.8.1.
の文字列が含まれています。
.NET Framework 4.8 の場合
MANIFESTの
TargetFrameworkAttribute
の項目の中に
.NET Framework, Version=v4.8.
の文字列が含まれています。
.NET Framework 4.7.2 の場合
MANIFESTの
TargetFrameworkAttribute
の項目の中に
.NET Framework, Version=v4.7.2.
の文字列が含まれています。
.NET Framework 3.5 の場合
MANIFESTの
TargetFrameworkAttribute
の値がなくバージョンはわからない状態です。先頭部分の
.assembly
の
.ver
の値が
2:0:0:0
になるため、.NET Framework Version 4以前であることは確認できます。
.NET Framework 3.0 の場合
MANIFEST内には.NET Frameworkのバージョンの記述がなく、先頭部分の
.assembly
の
.ver
の値が
2:0:0:0
であることから、.NET Framework Version 4以前であることは確認できます。
.NET Framework 2.0 の場合
MANIFEST内には.NET Frameworkのバージョンの記述がなく、先頭部分の
.assembly
の
.ver
の値が
2:0:0:0
であることから、.NET Framework Version 4以前であることは確認できます。
.NET アプリケーションのバイナリから参照ランタイムのバージョンを調べることができました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-11-21
作成日: 2022-11-21