dotPeekはあらゆる.NETアセンブリを同等のC#コードにデコンパイルし、その基となるILコードを最適に表示します。
dotPeekは、ライブラリ (.dll)、実行ファイル(.exe)、メタデータファイル (.winmd)など、さまざまな形式を取り扱うことができます。
dotPeekは.bamlファイルもデコンパイルできるため、XAML UIの定義を再構築することができます。
従来のアセンブリや実行ファイルのほか、dotPeekでアーカイブ(.zip、.vsix、.nupkg)やフォルダを開くことができます。 また、オンラインパッケージソースからNuGetパッケージ(および必要に応じてその依存物)を検索して読み込んだり、Visual Studioプロジェクトのpackages.configファイルに記載されたパッケージを読み込んだりすることもできます。
何もないよりはデコンパイルされたコードがあったほうがましですが、アセンブリをそのソースコードにマッチできる場合があります。このメリットを活かしましょう。 dotPeekはPDBファイルに基づくローカルのソースコード特定したり、Microsoft Reference Source CenterやSymbolSource.orgなどのソースサーバーからソースコードを取得したりできます。 さらに、dotPeekはPDBファイルを生成できます。
メニューバーのナビゲーションモードのドロップダウンを使用し、dotPeekに単にアセンブリをデコンパイルさせるか、可能な場合にソースコードを検索させるかを選択できます。
特定のコンパイラによる変換を表示し、dotPeekが表示するコード構造をコンパイラの変換結果とよく似たものにすることができます。 これにより、コンパイラがラムダ、クロージャ、自動プロパティその他をどのように処理しているのかを確認できます。
Process Explorerウィンドウには現在実行中のプロセスがすべてリスト表示され、それらのモジュールを調べたり、.NETアセンブリであるプロセスをデコンパイルしたりできます。 ネイティブなプロセスやモジュールを表示または非表示にしたり、プロセスを階層表示にしたり選択できます。
リストを絞り込んで目的のモジュールやプロセスを見つけ、そのアセンブリを Assembly Explorerに追加して詳しく調査することができます。
ソースコード以上に深く掘り下げたい場合は、デコンパイルされたC#の任意の場所からILコードに移動できます。
そのためには、メインのコードビューアと同期している単独のツールウィンドウでILコードを表示するのが最も簡単です。
dotPeekはデコンパイルされたコードとシンボルファイルから再生したソースコードの両方に対してILコードを表示できます。
もう一つの方法として、ILコードをデコンパイルされたC#コードにコメントとして表示させることができます。これにより、デフォルトのテキストビューアと通常は独立しているIL Viewerウィンドウを一つのビューに効果的にまとめることができます。
dotPeekはVisual Studioと同じカラーテーマ一式をサポートしています。
例えば、青のテーマやダークテーマを選択したり、Visual Studioで設定した配色設定と同期したりできます。
dotPeekはReSharperのパワフルなコードインサイトアーキテクチャを基にしているため、コンテキストに応じて、あるいはコンテキストに依存してデコンパイル済みのアセンブリ間を移動できます。
dotPeekでは複数のオプションを使ってコードのシンボルが参照されている箇所を検索できます。
読み込まれたすべてのアセンブリを対象にシンボル(メソッドやプロパティなど)の使用箇所すべてを検索するには、Find Usagesを呼び出してください。 使用箇所がFind Resultsツールウィンドウに表示されます。そこでは複数の使用箇所をグループ化し、それらの間を移動し、コードビュー領域で開くことができます。
また、Find Usagesの詳細版であるFind Usages Advancedもあります。こちらを使えば、検索範囲その他の情報を限定して検索条件を微調整できます。
dotPeekはキャレットの下にあるシンボルの表示可能なすべての使用箇所を、Visual Studioの最近のバージョンとよく似た方法で自動的にハイライト表示します。 これにより、難読化された識別子を処理する場合などを中心にデコンパイル済みコードの可読性が向上します。
また、現在表示可能かどうかにかかわらずファイル内のすべての使用箇所を調査したい場合は、>Highlight Usages in Fileを使用してください。 これにより、現在ファイル内で所定シンボルの使用箇所がすべてハイライト表示されます(書き込みと読み取りの使用箇所は2種類の別の色で示されます)。
Go to File Memberを使用すると、デコンパイルされた型を表すドキュメント内メンバーの簡単な概要を表示し、そこへ移動することができます。 メンバー名の一部を入力し、そのメンバーに直接移動できます。
または、現在のドキュメントでメンバーを静的に表示したい場合はFile Structureツールウィンドウを開いてドッキングさせてください。 このビューも絞り込みに対応しています。具体的にはツールウィンドウを選択し、文字の入力を開始して関心のある型メンバーのみに的を絞るだけです。
dotPeekはアセンブリリストにあるすべてのアセンブリとそれらの参照先をインデックスすることで、次のような特定のコードに素早くジャンプできる2つの機能を提供しています。
デコンパイル済みコードの中に重要だと思われる行があり、後でその場所に戻りたい場合は自由にブックマークを設定してください。
ショートカット対応の番号付けされたマーカーを置き、別のショートカットを使っていつでも戻ってくることができます。 数字付きのブックマークは10件まで、数字なしのブックマークは無制限に作成できます。 ブックマークした位置はすべて、単一のポップアップウィンドウに表示されます。
コードビュー領域のシンボルにキャレットを置くと常に、dotPeekはコンテキスト依存型の豊富なナビゲーションオプションをご提供します。これらはすべて、以下にナビゲート:(Navigate To)のドロップダウンメニューからご利用いただけます。
例えば、Go to Declarationを使うと任意のシンボルの使用箇所からその宣言部に移動できます。 対象のシンボルが別のアセンブリで宣言されている場合、そのアセンブリが自動的に読み込まれます。
Go to Implementationは、抽象クラスなどの継承チェーン内にある中間の継承ステップを飛ばして型や型メンバーの最終実装部分に移動するのに役立ちます。
その他の便利な状況依存型の移動オプションには、Go to Base SymbolsとGo to Extension Methodsが挙げられます。
特定の型や型メンバーの継承階層を上下に移動したい場合は、Go to Base SymbolsとGo to Derived Symbolsの利用をご検討ください。
これらは継承先や基本シンボルにすぐに移動したい場合に非常に便利です。
ある継承チェーンの概要を可視化したい場合は、Type Hierarchyを使用してください。
dotPeekは選択した型を継承したすべての型だけでなく、それ自身が継承する型もツリービューや単独のツールウィンドウに表示します。
dotPeekは所定アセンブリの構造を素早く把握し、アセンブリ間の関係を理解し、アセンブリを個別のリストにまとめるためのツールを提供しています。これは、現在の課題について関心のあるアセンブリのみに注力するのに役立ちます。
状況に応じてさまざまなアセンブリリストを処理できるようになりました。 アセンブリリストを保存して開き直したり、不要になった現在のリストを消去したりできます。 アセンブリリストは.dllファイルと.exeファイルに限定されません。NuGetパッケージ、アーカイブ、フォルダも含めることができます。
アセンブリリストを処理する際、Assembly Explorerには名前空間から型メンバーまで特定アセンブリが持つさまざまな参照、リソース、コードの種類が表示されます。
それぞれの型について、実際のメンバーのリストに加えてその基本型と継承先となるノードがハイライト表示されます。 lowerCamelHumpsを使用した簡易検索とノードの絞り込みもサポートされています。
dotPeek はアセンブリメタデータを調査し、その中にあるすべての項目(テーブル、BLOB、文字列など)を探るのにも役立ちます。 Metadata ノードの下では、BLOB項目の値、PEファイルヘッダー、メタデータテーブル項目の使用状況を調査できます。
アセンブリツリーのその他の場所と同様、メタデータ項目をダブルクリックして対応するコードのデコンパイルや表示を行えます。
アセンブリ間の相互依存関係を確認したい場合は、Assembly Explorerで複数のアセンブリを選択し、dotPeekにアセンブリ依存関係ダイアグラムを表示するよう伝えてください。
これにより、選択したアセンブリ間に存在するすべての関係が、それらの参照先に基づいて可視化されます。
無料、ライセンスキーは必要ありません