51

.NETアセンブリをコンパイルするために比較するのに良いプログラムはありますか?

たとえば、HelloWorld.dll(1.0.0.0)とHelloWorld.dll(2.0.0.0)があり、違いを比較したいのですが、どうすればよいですか?

.NET Reflectorを使用して、AssemblyDiffプラグインを使用できることはわかっています。これを行うための他の良いツールはありますか?

4

6 に答える 6

49

.NET アセンブリを比較する方法が示唆する

商業:

無料:


Beyond Compare (商用) などの既存の比較ツールは、特別な構成によってこれを行うことができます。Beyond Compare でこれを行う方法は次のとおりです。

  • Tools→へOptions
  • をクリックしNew..、「テキスト形式」を選択し、OK
  • 名前 (たとえば、EXE、または DLL) を付けて、マスクを次のように指定します*.exe*.dll
  • タブをクリックし、Conversion「外部プログラム (Unicode ファイル名)」を選択します。
  • 「読み込み中」の下で、へのパスを指定しildasmて追加します %s /OUT:%t /NOBAR(例: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe %s /OUT:%t /NOBAR)
  • 必ずご確認くださいdisable editing
  • をクリックしSaveClose
  • BC を再起動exeし、比較する 2 つのファイルを開くと、ilasm自動的に逆コンパイルされるはずです。

この新しい形式にシンタックス ハイライトを追加することもできます。シンタックス ファイルを送信して共有できるようにする予定です。

于 2009-03-16T23:00:53.873 に答える
25

ふたつのやり方。

ILDASMを使用して、従来のツールと比較することができます。

または、NDependsを使用することもできますが、その機能にはコストがかかります。

[Piece to C#bloaters ..]

于 2009-03-16T22:59:32.283 に答える
11

同じバージョンの同じ DLL の 2 つのリビジョンを比較する必要がありました (小さな修正プログラムを実装し、DLL を運用環境にデプロイする必要がありましたが、他の変更がコードに漏れていないことを確認したかったのです)。理想的には、Assemby Diff アドインで違いを表示してもらいたいのですが、機能しません (DLL をそれ自体と比較していると見なされます)。だからこれは私がやったことです:

  • 逆アセンブルされたソース ファイルを保持する 2 つのフォルダーを作成しました。
  • (コンテキスト メニューから) Reflectorの[エクスポート] オプションを使用して、前の手順で作成したフォルダー内の各 DLL からソース ファイルを生成しました。
  • 無料のDiffMergeツールを使用して 2 つのディレクトリを比較しました。ツールは、変更されたファイルとその違いを示してくれました。

少しぎこちないですが、うまくいくようです。ただし、Assembly Diff アドインが機能することを願っています。

更新: Assembly Diff アドインの最新バージョンは、同じアセンブリの 2 つのバージョンを比較する問題を修正する予定です。試してみる。

于 2009-07-20T22:09:11.327 に答える
7

ツールNDependは、.NET コードの差分を処理するための多くの機能を提供します。免責事項: 私はツールの開発者の 1 人です

変更による検索パネルは、アセンブリ コードの差分を閲覧するためのものです。次の点に注意してください。

  • メニューで使用される任意のコード diff ツールを NDepend にプラグインできますソース ファイルの古いバージョンと新しいバージョンを比較する
  • ソース コードがなく、未加工のアセンブリしかない場合は、Reflector で逆アセンブルされた古いバージョンと新しいバージョンを比較するオプションがあります。

Diff パネルによる NDepend 検索

スクリーンショットでは、差分を参照するためにCQLinq コード クエリが生成されていることにも注意してください。

from m in Application.Methods 
where m.CodeWasChanged() 
select new { m, m.NbLinesOfCode }

他の多くのデフォルト diff クエリとルールがデフォルトで提案されており、.NET コードの diff をスマートな方法でブラウズできます。

于 2010-08-28T14:15:24.750 に答える
2

もう 1 つのオプションは、Microsoft のLibCheckです。

パブリック API の差分を取得するためのかなり古いコンソール ツールです。デバッグして最新の .net バージョンにリターゲットしないと実行できませんでした。ただし、非常に明確な出力が得られたので、後で使用します。

スクリーンショット付きの記事はこちら。

于 2015-08-08T11:43:12.117 に答える
-11

Java には素晴らしいものがあります: Semantic Diff Utilities

于 2009-03-16T23:01:14.230 に答える