[解決済み] 実行ファイルがどのバージョンの.NET Frameworkで実行する必要があるかを調べるには?
質問
実行可能なファイルを持っていますが、このファイルを起動するために必要な Microsoft .NET Framework のバージョンを知りたいです。
この情報をどこかで簡単に見つける方法はありますか。
(今までのところ、私は ILDASM と ダンプビン を実行しましたが、うまくいきませんでした)。
どのように解決するのですか?
のバージョンを判断することが、最も信頼できる方法だと思います。 CLR が必要なのかを判断することです。これは ILDASM を使って "MANIFEST" ノードを見るか、Reflector を使って "Application.exe" ノードのディスアセンブリービューをILとして見ることでできます。どちらの場合も、CLRのバージョンを示すコメントがあります。ILDASM では、コメントは "// Metadata version" で、Reflector では、コメントは "Target Runtime Version" となっています。
以下は、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
また、参照されているアセンブリのリストを見て、最も高いバージョン番号を持つ参照を探すこともできます。
再び、"MANIFEST"ノードデータを見ながらILDASMを使用します。
.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を使って、リストアップされた各参考文献のdissambly(やはりILとして)を見てみます。
.assembly extern System.Core
{
.ver 3:5:0:0
.publickeytoken = (B7 7A 5C 56 19 34 E0 89)
}
最も高いバージョンのメタデータを持つ参照を見つけることによって、その参照がどのバージョンの Framework から来たかを決定することができ、それは、アプリケーションを実行するために、同じバージョンの Framework をインストールする必要があることを示します。とはいえ、私はこれを 100% 信頼できるものとして扱いませんが、すぐに変わるとは思えません。
関連
-
[解決済み] Powershell v3 Invoke-WebRequest HTTPSエラー
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] .NETアプリケーションを強制的に管理者として実行させるにはどうしたらいいですか?
-
[解決済み] ファイルが使用中であるかどうかを確認する方法はありますか?
-
[解決済み] アセンブリファイルのバージョンを取得する方法
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?
-
[解決済み] .NET 4.0 プロジェクトで .NET 2.0 混合モード アセンブリを参照するために必要な「追加設定」は何ですか?
-
[解決済み] Rでロードされているパッケージのバージョンを調べるには?
-
[解決済み】私はどのバージョンのC#を使っているのでしょうか?
-
[解決済み】IIS 7 アプリケーションプールで .net Framework 4.5 バージョンを設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み] ファイル *.mdf をデータベースとして添付できません。
-
[解決済み] Marginのプロパティ順
-
[解決済み] 到達不能なホストに対してソケット操作を行おうとした
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?
-
[解決済み] WCF - メッセージサイズのクォータを増加させる方法
-
[解決済み] dllの.NET Frameworkバージョンの決定