.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる - Visual Studio

.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 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
iPentec all rights reserverd.