15

あるインストールのいくつかのdllを、使用しているアプリケーションの別のインストールのいくつかのdllと比較したいと思います。それらが完全に同じであることを確認する必要があります。2つのdllを比較して、メソッド、プロパティ、バージョンなどがまったく同じであることを確認するにはどうすればよいですか?

RedGate .Net Reflectorを使い始めましたが、作業が面倒になったので、SOを試してみて、他の誰かが以前に私の状況にあったかどうかを確認し、迅速な解決策があるかどうかを確認しました。

ありがとうございました!

4

4 に答える 4

8

これに答えるためにアセンブリのバージョン管理に頼ることはできないと思います。

グーグルで簡単に検索すると、スコット・ハンゼルマンによるこの投稿が見つかりました。これは、問題を解決する可能性のあるいくつかのツールを示しています。

于 2010-07-23T03:42:44.427 に答える
7

私はこのタスクを実行するために常にWinMergeを使用しています。ディレクトリ全体を比較することもできます。もちろん、これは、コードが表示されないため、同じかどうかを知る必要がある場合に使用します。

于 2010-07-23T03:57:38.510 に答える
4

Dependency Walkerを使用してみませんか?エクスポートされたすべての関数をテキストファイルにコピーします。他のDLLでも同じことを繰り返します。次に、2つのテキストファイルを比較します。

「不明な」依存関係が欠落しているためにDLLをロードできないというエラー127を解決するために、これを1回実行しました。

于 2010-07-23T03:58:05.177 に答える
2

編集:プログラム以外の決定のヒントについては、confusedGeeksの回答を参照してください:-)

次に、SNアセンブリを使用して「バージョン」を決定します。

ABIがバージョンに反映されていない場合は、ファイルに対してセカンダリmd5sumを実行するか、2つのアセンブリのリフレクティブ比較を実行します。もちろん、md5sumは、ABIが変更されていなくても、内部/コンパイルの変更を「キャッチ」します。ABIを反映することは、より複雑で潜在的に犬のように遅いものの、ABIの変更をスポットオンで決定する可能性があります。

同じバージョンのアセンブリを「上書き」するのが最も簡単で十分な場合があります(以前のバージョン/後のバージョンは、配置した人が削除するまでそのままにしておきます)。

于 2010-07-23T03:54:12.497 に答える