質問

.NETアセンブリのコンパイルに比較できる優れたプログラムはありますか?

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

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

役に立ちましたか?

解決

他のヒント

2つの方法。

従来のツールを使用してILDASMとdiffを作成できます。

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

[C#bloatersへのピース。]

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

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

それは少し気味が悪いですが、動作するようです。ただし、Assembly Diffアドインが機能することを望みます。

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

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

パネルの[変更による検索]は、アセンブリコードの差分の参照専用です。次のことに注意してください:

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

NDepend Search by Diff Panel

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

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

デフォルトでは、他の多くのデフォルトの差分クエリとルールが提案されています。これにより、.NETコードの差分をスマートに閲覧できます。

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

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

スクリーンショット付きの記事

Javaには素晴らしいものがあります:セマンティックDiffユーティリティ

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