dotPeekの正式版が出たらしいので入れてみた。
.NETのアセンブリを確認する場合は、.NET Reflectorってのが定番だったんだけれど、Reflector 7が有料化後は、幾つかのベンダーは代替えツールの開発を進めていました。
- justDecompile http://www.telerik.com/products/decompiler.aspx
- dotPeek http://www.jetbrains.com/decompiler/ ※ Reflectorもv6.8は無料で利用できます。(.NET Reflector v7は有料だけどv6.8は無料で使い続けられるようにするよ)
で、ReSharperでおなじみjetbrains製のdotPeekが1.0になったらしいので、ちょこっと触ってみました。
インストール
インストーラーはZIP版とMSI版の2つがあり、下記のURLからダウンロードできます。
http://www.jetbrains.com/decompiler/download/index.html
起動すると、こんなスプラッシュウインドウが表示されます。
初めてのデコンパイル
こんなコードを記述した、VBのアセンブリを表示してみましょう。無駄にラムダ式入れています。
Module Module1
Sub Main()
Console.WriteLine((Function() DateTime.Now.ToString())())
End Sub
End Module
メイン画面にアセンブリをドロップするか、Fileメニューからアセンブリを参照し、でコンパイルする対象をDecompile Sourceからデコンパイルすると、こんな感じに表示されます。
デフォルトでは左側に読み込まれたアセンブリの一覧と、そのアセンブリに含まれるクラス、リソース、参照するアセンブリがツリー上に表示されます。このあたりはReflectorと変わりませんね。表示されているソースコードは、、、C#ですね。VBのソースはどうやって表示するんだろう。。。
コンパイラーが生成したコード
ラムダ式や匿名デリゲートを利用すると、コンパイラーがコンパイル時に自動的にクラスを作成します。こういったクラスたちを表示する場合は、Show Compiler-generated codeをクリックしてあげると、こんな感じに表示されます。
ラムダ式が_Lambda\u0024__1()というメソッドに置き換わり、VB$AnonymouseDelegate_0<TResult>デリゲートが作成されているのを確認できます。
ソースコードの参照
PDBファイルがある場合は逆アセンブリされたソースではなく、ローカルのソースコードか、公開されているソースサーバーから該当のソースコードをマッピングして表示することができます。
ソースコードがあれば、VBのソースが表示されます。(PDBとソースコードがある環境でわざわざこれを使うことがあるのか?)
Tips
キーボードショートカットの一覧が公開されています。
ReShaperを利用している場合は、