実行可能ファイルがあります。このファイルを起動する必要がある Microsoft .NET Framework のバージョンを知りたいです。
この情報をどこかで簡単に見つける方法はありますか?
実行可能ファイルがあります。このファイルを起動する必要がある Microsoft .NET Framework のバージョンを知りたいです。
この情報をどこかで簡単に見つける方法はありますか?
Notepad、30年前、サイズ200kb、プリインストールされたツールを使用:
notepad appname.exe
でアプリケーションを 開くF3
れるまで最後の検索を繰り返す.NET Framework,version=vX.Y
v2.
も、数ギガバイトのドット ネット アナライザー ツールとガベージ スタジオをインストールするよりも 100 倍簡単です。Notepad++ や totalCommander の優れた text/hex viewer listerなど、他のエディター/ビューアーでもバイナリを開くことができます。
確実に取得できる最も近い方法は、必要なCLRのバージョンを判断することだと思います。これを行うには、ILDASM を使用し、「MANIFEST」ノードまたは Reflector を確認し、「Application.exe」ノードの逆アセンブリ ビューを IL として確認します。どちらの場合も、CLR のバージョンを示すコメントがあります。ILDASM では、コメントは「// メタデータ バージョン」であり、Reflector では、コメントは「ターゲット ランタイム バージョン」です。
WindowsFormsApplication1.exe という名前の .NET WinForms アプリケーションの例を次に示します。
ILDASM:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
リフレクター:
.module WindowsFormsApplication1.exe
.subsystem 0x0002
// MVID: {CA3D2090-16C5-4899-953E-4736D6BC0FA8}
// Target Runtime Version: v2.0.50727
参照されているアセンブリのリストを見て、バージョン番号が最も大きい参照を探すこともできます。
ここでも、ILDASM を使用して「MANIFEST」ノード データを確認します。
.assembly extern System.Drawing
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 3:5:0:0
}
また、Reflector を使用して、リストされている各参照の逆アセンブリ (IL のまま) を調べます。
.assembly extern System.Core
{
.ver 3:5:0:0
.publickeytoken = (B7 7A 5C 56 19 34 E0 89)
}
最新バージョンのメタデータを含む参照を見つけることで、その参照がどのバージョンのフレームワークからのものであるかを判断できます。これは、アプリケーションを実行するために同じバージョンのフレームワークをインストールする必要があることを示します。そうは言っても、これを100%信頼できるとは考えていませんが、すぐに変わるとは思いません.
より単純なアプローチは、dotPeekを使用してツリーに表示されるものを確認することです。
ILSpyを使用して、アセンブリのターゲット フレームワークを調べることができるようになりました。アセンブリをロードした後、アセンブリ ノードのルートをクリックすると、TargetFramework 宣言の下に情報が表示されます。
[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
コードから使用できますAssembly.ImageRuntimeVersion
が、ファイルを見て、おそらく最善の方法は、リフレクターを使用して、どのバージョンがmscorlib
参照されているかを確認することです。
編集: ildasm を使用し、アセンブリを開き、アセンブリのマニフェストを表示することをお勧めします。マニフェストの最初の行は、アセンブリがビルドされた CLRの正確なバージョンを示します。
CorFlags.exe というツールを使用できます。これは .NET 2.0 から存在しており、Windows SDK 7.0 に含まれていることは確かです。デフォルト (Windows XP Pro) では、C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\CorFlags.exe にインストールされます。マネージ モジュールへのファイル パスを (他のコマンド ライン フラグなしで) 指定して、バージョンを含むヘッダー情報を表示します。
このユーティリティはモジュールの PE32 ヘッダーを変更するように設計されているため、ドキュメントを注意深く読むまでフラグを使用しないでください。
または、 System.Core のどの参照があるかを調べることができます。これにより、このアプリが使用している .NET Framework のバージョンがわかります。2.0 の場合、System.Core のバージョンは 2.0.xxx.xxx になります。3.5 の場合、バージョンは 3.5.xxx.xxx などになります。