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

.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる手順を紹介します。

概要

.NETアプリケーションの実行ファイルは.NETのランタイムライブラリを参照していますが、どのバージョンを参照しているかを知りたい場合があります。 単純に実行して動作するかで確認する方法もありますが、複数の.NET ランタイムがマシンにインストールされている場合、どのランタイムバージョンを参照して 実行ファイルが起動したのかわからない場合もあります。
この記事では、実行バイナリファイルが参照する.NETのバージョンを調べる手順を紹介します。

事前準備

Visual Studioをインストールします。

手順

スタートメニューのVisual Studio のフォルダ内の[x64 Native Tools Command Prompt for VS 2022]のショートカットをクリックします。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像1

Visual Studio のツール用のコマンドプロンプトのウィンドウが表示されます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像2

次のコマンドを入力して実行します。
ildasm
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像3

コマンドを実行すると、下図のウィンドウが表示されます。[ファイル]メニューの[開く]をクリックします。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像4 .NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像5

ファイルを開くダイアログが表示されます。ビルドされた.NET アプリケーションの実行ファイルを選択します。 今回サンプルとして、.NET 7でビルドしたコンソールアプリケーションを準備しました。はじめに .exe ファイルを開いてみます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像6

exeファイルを開くと、有効なCLRヘッダを持っていないエラーが表示されます。exeファイルではなく、dllファイルのほうを開く必要がありそうです。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像7

dllファイルを開くと、下図の画面に切り替わります。ウィンドウのツリービューの[MANIFEST]のノードをダブルクリックします。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像8 .NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像9

ダブルクリックすると、ウィンドウが表示され、マニフェストの内容を確認できます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像10

.ver の値が 7:0:0:0 になっており、この値で、この実行ファイルが .NET 7であることが確認できます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像11

.NET 9アプリケーションの場合

.NET 9アプリケーションを開くと、.ver の値が 9:0:0:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像12
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像13

.NET 8アプリケーションの場合

.NET 8アプリケーションを開くと、.ver の値が 8:0:0:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像14
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像15

.NET 7アプリケーションの場合

.NET 7アプリケーションを開くと、.ver の値が 7:0:0:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像16
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像17

.NET 6アプリケーションの場合

.NET 6アプリケーションを開くと、.ver の値が 6:0:0:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像18
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像19

.NET 5アプリケーションの場合

.NET 6アプリケーションを開くと、.ver の値が 5:0:0:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像20
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像21

.NET Core 3.1アプリケーションの場合

.NET Core 3.1アプリケーションを開くと、.ver の値が 4:2:2:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像22
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像23

.NET Core 3.0アプリケーションの場合

.NET Core 3.0アプリケーションを開くと、.ver の値が 4:2:1:0 となっています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像24
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像25

.NET Framework アプリケーションの場合

.NET Framework のアプリケーションの場合は、.ver の値が 4:0:0:0 になります。 .NET Framework のアプリケーションでバージョンを調べる場合はTargetFrameworkAttributeの値を確認します。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像26
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像27
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像28
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像29

.NET Framework 4.8.1 の場合

MANIFESTのTargetFrameworkAttributeの項目の中に .NET Framework, Version=v4.8.1. の文字列が含まれています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像30

.NET Framework 4.8 の場合

MANIFESTのTargetFrameworkAttributeの項目の中に .NET Framework, Version=v4.8. の文字列が含まれています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像31

.NET Framework 4.7.2 の場合

MANIFESTのTargetFrameworkAttributeの項目の中に .NET Framework, Version=v4.7.2. の文字列が含まれています。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像32

.NET Framework 3.5 の場合

MANIFESTのTargetFrameworkAttributeの値がなくバージョンはわからない状態です。先頭部分の .assembly.ver の値が 2:0:0:0 になるため、.NET Framework Version 4以前であることは確認できます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像33

.NET Framework 3.0 の場合

MANIFEST内には.NET Frameworkのバージョンの記述がなく、先頭部分の .assembly.ver の値が 2:0:0:0であることから、.NET Framework Version 4以前であることは確認できます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像34

.NET Framework 2.0 の場合

MANIFEST内には.NET Frameworkのバージョンの記述がなく、先頭部分の .assembly.ver の値が 2:0:0:0であることから、.NET Framework Version 4以前であることは確認できます。
.NETアプリケーションの実行バイナリファイルが参照する .NETのバージョンを調べる:画像35

.NET アプリケーションのバイナリから参照ランタイムのバージョンを調べることができました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2022-11-21
Copyright © 1995–2025 iPentec all rights reserverd.