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