アーカイブ

Posts Tagged ‘ツール’

dotPeekの正式版が出たらしいので入れてみた。

2012年5月11日 1件のコメント

.NETのアセンブリを確認する場合は、.NET Reflectorってのが定番だったんだけれど、Reflector 7が有料化後は、幾つかのベンダーは代替えツールの開発を進めていました。

で、ReSharperでおなじみjetbrains製のdotPeekが1.0になったらしいので、ちょこっと触ってみました。

インストール

インストーラーはZIP版とMSI版の2つがあり、下記のURLからダウンロードできます。

http://www.jetbrains.com/decompiler/download/index.html

起動すると、こんなスプラッシュウインドウが表示されます。

image

初めてのデコンパイル

こんなコードを記述した、VBのアセンブリを表示してみましょう。無駄にラムダ式入れています。

Module Module1

Sub Main()
Console.WriteLine((Function() DateTime.Now.ToString())())
End Sub

End Module

メイン画面にアセンブリをドロップするか、Fileメニューからアセンブリを参照し、でコンパイルする対象をDecompile Sourceからデコンパイルすると、こんな感じに表示されます。

image

デフォルトでは左側に読み込まれたアセンブリの一覧と、そのアセンブリに含まれるクラス、リソース、参照するアセンブリがツリー上に表示されます。このあたりはReflectorと変わりませんね。表示されているソースコードは、、、C#ですね。VBのソースはどうやって表示するんだろう。。。

コンパイラーが生成したコード

ラムダ式や匿名デリゲートを利用すると、コンパイラーがコンパイル時に自動的にクラスを作成します。こういったクラスたちを表示する場合は、Show Compiler-generated codeをクリックしてあげると、こんな感じに表示されます。

image

ラムダ式が_Lambda\u0024__1()というメソッドに置き換わり、VB$AnonymouseDelegate_0<TResult>デリゲートが作成されているのを確認できます。

ソースコードの参照

PDBファイルがある場合は逆アセンブリされたソースではなく、ローカルのソースコードか、公開されているソースサーバーから該当のソースコードをマッピングして表示することができます。

image

ソースコードがあれば、VBのソースが表示されます。(PDBとソースコードがある環境でわざわざこれを使うことがあるのか?)

image

Tips

キーボードショートカットの一覧が公開されています。

ReShaperを利用している場合は、