2011-07-11 14 views
4

異なる場所にある2つの同じ.net dllを比較したいと思います。したがって、System.Reflection.Assembly.LoadFrom(filename)の代わりにSystem.Reflection.Assembly.LoadFile(filename)を使用してDLLをロードしています。しかし、比較される.Net dllは、他のアセンブリ(それぞれのdllと同じフォルダにあります)への参照を持っています。 LoadFile(filename)に続いてGetTypes()を使用してdllをロードすると、ReflectionTypeLoadExceptionがスローされます。どのように彼らのタイプ&を比較するように反射を使用して2つの同一のdllを読み込む必要がありますか?C# - 反射を使って2つの.net dllを比較する

+0

あなたが実際には同じDLLを比較することによって、達成するために何をしようとしていますか? telerikのようなツールを使うことはできません。アセンブリの中身を見たいだけなら、DecompileやIlSpyを使うことができますか? – nabeelfarid

+0

私は、dllの2つの異なるバージョンを比較するアプリケーションを作成する課題を持っています。したがって、私は(異なるバージョンの)同じdllを比較し、変更を見つける必要があります。 – user386527

+2

おそらくモノセシルベースの何か? – CodesInChaos

答えて

1

正しくロードされたタイプのリストを表示するには、ReflectionTypeLoadExceptionをキャッチすることができます。あなたが不足しているアセンブリがあなたにも助け」にするためにAppDomain.AssemblyResolveイベントを処理することができます見つけることができる場所を知っている場合

:この上にいくつかの詳細については、以下のリンクを参照してください。必要な依存関係を探し出してロードすることで、「アウト」することができます。

1

2つのアセンブリを比較したい場合は、確かにの負荷をにする必要はありません。私はMono.Cecilに基づいてより静的なアプローチを提案します。

これは、モジュールレベル、タイプ、メソッドを簡単な方法で比較することができます。ドキュメントをはじめ

は、ここで見つけることができます:

https://github.com/jbevain/cecil/wiki/HOWTO

関連する問題