アセンブリがロードされているフレームワークを特定する方法は?

StackOverflow https://stackoverflow.com/questions/3515459

  •  29-09-2019
  •  | 
  •  

質問

ユーザーは、.NET 4をインストールした後、アプリケーションの奇妙な動作を解決できると報告しました。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

アセンブリを指定しなければ、より高いが互換性のあるバージョンでロードされる可能性があることを知りませんでした。

実行可能ファイルが実行しているフレームワークを特定することは可能ですか?実行時に?または、外部プロセスを通じて?これが事実であることを確認したいと思いますが、ユーザーエクスペリエンスは他の問題の結果ではありません。


Process Explorerは、Evemonが2.0の下で実行されていると言います、私は問題が環境だったと疑っています:

Process Explorer

役に立ちましたか?

解決

アセンブリの実行コード内から、System.Environment.version staticプロパティを使用して、実行中のCLRバージョンを決定できます。

アセンブリコードを変更したくない場合は、使用できます プロセスエクスプローラー 実行時にプロセスでDLLがロードされていることを確認します。 CLRバージョンは、mscoree.dllのバージョンから識別できます。

他のヒント

CLRバージョン2.0.50727を対象としたプログラムは、.NET 4.0で自動的に実行されません。明示的な.configファイルエントリが必要です。 .configファイルを使用したクライアントの腕前を考えると、これは彼女が実際に行ったことかもしれませんが、そこに問題があることがわかりました。

ニコールが言ったように、プロセスエクスプローラーは間違いなく最も簡単な方法です。 WindDBGを使用して、この情報をフルメモリダンプから取得することもできます。

また、4.0で並んでいることに注意してください CLRホスティング. 。あなたが持っていたプロセスを所有していなかった場合、4.0の前に CLRがロードされたものを知る方法はありません. 。これが、あなたが説明した行動を経験した理由になる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top