dotPeekの機能

.NETアセンブリをC#またはILにデコンパイル

dotPeekはあらゆる.NETアセンブリを同等のC#コードにデコンパイルし、その基となるILコードを最適に表示します。

dotPeek UIの概要

ライブラリ、実行ファイル、その他

dotPeekは、ライブラリ (.dll)、実行ファイル(.exe)、メタデータファイル (.winmd)など、さまざまな形式を取り扱うことができます。

dotPeekは.bamlファイルもデコンパイルできるため、XAML UIの定義を再構築することができます。

従来のアセンブリや実行ファイルのほか、dotPeekでアーカイブ(.zip.vsix.nupkg)やフォルダを開くことができます。 また、オンラインパッケージソースからNuGetパッケージ(および必要に応じてその依存物)を検索して読み込んだり、Visual Studioプロジェクトのpackages.configファイルに記載されたパッケージを読み込んだりすることもできます。

ソースコードの表示(可能な場合)

ソースコードの表示(可能な場合)

何もないよりはデコンパイルされたコードがあったほうがましですが、アセンブリをそのソースコードにマッチできる場合があります。このメリットを活かしましょう。 dotPeekはPDBファイルに基づくローカルのソースコード特定したり、Microsoft Reference Source CenterSymbolSource.orgなどのソースサーバーからソースコードを取得したりできます。 さらに、dotPeekはPDBファイルを生成できます。

メニューバーのナビゲーションモードのドロップダウンを使用し、dotPeekに単にアセンブリをデコンパイルさせるか、可能な場合にソースコードを検索させるかを選択できます。

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

コンパイラが生成したコードの表示・非表示

特定のコンパイラによる変換を表示し、dotPeekが表示するコード構造をコンパイラの変換結果とよく似たものにすることができます。 これにより、コンパイラがラムダ、クロージャ、自動プロパティその他をどのように処理しているのかを確認できます。

dotPeekのProcess Explorerウィンドウ

実行プロセスの調査

Process Explorerウィンドウには現在実行中のプロセスがすべてリスト表示され、それらのモジュールを調べたり、.NETアセンブリであるプロセスをデコンパイルしたりできます。 ネイティブなプロセスやモジュールを表示または非表示にしたり、プロセスを階層表示にしたり選択できます。

リストを絞り込んで目的のモジュールやプロセスを見つけ、そのアセンブリを Assembly Explorerに追加して詳しく調査することができます。

dotPeekのILコードビューア

単独ビューでのILコード表示

ソースコード以上に深く掘り下げたい場合は、デコンパイルされたC#の任意の場所からILコードに移動できます。

そのためには、メインのコードビューアと同期している単独のツールウィンドウでILコードを表示するのが最も簡単です。

dotPeekはデコンパイルされたコードとシンボルファイルから再生したソースコードの両方に対してILコードを表示できます。

C#コードにコメントとして表示されたILコード

デコンパイルされたC#にILコードをコメントとして表示

もう一つの方法として、ILコードをデコンパイルされたC#コードにコメントとして表示させることができます。これにより、デフォルトのテキストビューアと通常は独立しているIL Viewerウィンドウを一つのビューに効果的にまとめることができます。

dotPeekのダークカラーテーマ

お好みのカラーテーマを使用できます

dotPeekはVisual Studioと同じカラーテーマ一式をサポートしています。

例えば、青のテーマやダークテーマを選択したり、Visual Studioで設定した配色設定と同期したりできます。

さまざまな方法でデコンパイル済みコード間を移動

dotPeekはReSharperのパワフルなコードインサイトアーキテクチャを基にしているため、コンテキストに応じて、あるいはコンテキストに依存してデコンパイル済みのアセンブリ間を移動できます。

Find Resultsは検出したすべてのシンボル使用箇所をリストします

シンボルの使用箇所を検索

dotPeekでは複数のオプションを使ってコードのシンボルが参照されている箇所を検索できます。

読み込まれたすべてのアセンブリを対象にシンボル(メソッドやプロパティなど)の使用箇所すべてを検索するには、Find Usagesを呼び出してください。 使用箇所がFind Resultsツールウィンドウに表示されます。そこでは複数の使用箇所をグループ化し、それらの間を移動し、コードビュー領域で開くことができます。

また、Find Usagesの詳細版であるFind Usages Advancedもあります。こちらを使えば、検索範囲その他の情報を限定して検索条件を微調整できます。

ファイル内での使用箇所のハイライト表示

コードビューアでの使用箇所のハイライト表示

dotPeekはキャレットの下にあるシンボルの表示可能なすべての使用箇所を、Visual Studioの最近のバージョンとよく似た方法で自動的にハイライト表示します。 これにより、難読化された識別子を処理する場合などを中心にデコンパイル済みコードの可読性が向上します。

また、現在表示可能かどうかにかかわらずファイル内のすべての使用箇所を調査したい場合は、>Highlight Usages in Fileを使用してください。 これにより、現在ファイル内で所定シンボルの使用箇所がすべてハイライト表示されます(書き込みと読み取りの使用箇所は2種類の別の色で示されます)。

File Structureウィンドウ

現在ドキュメントの調査

Go to File Memberを使用すると、デコンパイルされた型を表すドキュメント内メンバーの簡単な概要を表示し、そこへ移動することができます。 メンバー名の一部を入力し、そのメンバーに直接移動できます。

または、現在のドキュメントでメンバーを静的に表示したい場合はFile Structureツールウィンドウを開いてドッキングさせてください。 このビューも絞り込みに対応しています。具体的にはツールウィンドウを選択し、文字の入力を開始して関心のある型メンバーのみに的を絞るだけです。

特定の型、ファイル、メンバー等にジャンプするGo to Everything

任意のコードにジャンプ

dotPeekはアセンブリリストにあるすべてのアセンブリとそれらの参照先をインデックスすることで、次のような特定のコードに素早くジャンプできる2つの機能を提供しています。

  • Go to Symbolは、型・メソッド・フィールド・プロパティのような特定のシンボル宣言部への移動を支援します。 lowerCamelHumps構文を使用して型の場所を特定できます。例えば、xmardと入力すると XamlMarkupDeclaredElement の場所を特定して開くことができます。
  • Go to Everythingを使用すれば、アセンブリ・名前空間・型・メンバー・最近開いたファイルを検索できます。
dotPeekのブックマーク

ブックマークの設定

デコンパイル済みコードの中に重要だと思われる行があり、後でその場所に戻りたい場合は自由にブックマークを設定してください。

ショートカット対応の番号付けされたマーカーを置き、別のショートカットを使っていつでも戻ってくることができます。 数字付きのブックマークは10件まで、数字なしのブックマークは無制限に作成できます。 ブックマークした位置はすべて、単一のポップアップウィンドウに表示されます。

コンテキスト依存型の移動オプション

状況に応じた移動

コードビュー領域のシンボルにキャレットを置くと常に、dotPeekはコンテキスト依存型の豊富なナビゲーションオプションをご提供します。これらはすべて、以下にナビゲート:(Navigate To)のドロップダウンメニューからご利用いただけます。

例えば、Go to Declarationを使うと任意のシンボルの使用箇所からその宣言部に移動できます。 対象のシンボルが別のアセンブリで宣言されている場合、そのアセンブリが自動的に読み込まれます。

Go to Implementationは、抽象クラスなどの継承チェーン内にある中間の継承ステップを飛ばして型や型メンバーの最終実装部分に移動するのに役立ちます。

その他の便利な状況依存型の移動オプションには、Go to Base SymbolsGo to Extension Methodsが挙げられます。

派生型に移動

クラス階層の移動

特定の型や型メンバーの継承階層を上下に移動したい場合は、Go to Base SymbolsGo to Derived Symbolsの利用をご検討ください。

これらは継承先や基本シンボルにすぐに移動したい場合に非常に便利です。

型階層ビュー

継承チェーンの調査

ある継承チェーンの概要を可視化したい場合は、Type Hierarchyを使用してください。

dotPeekは選択した型を継承したすべての型だけでなく、それ自身が継承する型もツリービューや単独のツールウィンドウに表示します。

アセンブリの理解

dotPeekは所定アセンブリの構造を素早く把握し、アセンブリ間の関係を理解し、アセンブリを個別のリストにまとめるためのツールを提供しています。これは、現在の課題について関心のあるアセンブリのみに注力するのに役立ちます。

dotPeekはフォルダやアーカイブ、NuGetパッケージの閲覧に役立ちます。

アセンブリリストの管理

状況に応じてさまざまなアセンブリリストを処理できるようになりました。 アセンブリリストを保存して開き直したり、不要になった現在のリストを消去したりできます。 アセンブリリストは.dllファイルと.exeファイルに限定されません。NuGetパッケージ、アーカイブ、フォルダも含めることができます。

dotPeekのAssembly Explorer

アセンブリコンテンツの調査

アセンブリリストを処理する際、Assembly Explorerには名前空間から型メンバーまで特定アセンブリが持つさまざまな参照、リソース、コードの種類が表示されます。

それぞれの型について、実際のメンバーのリストに加えてその基本型と継承先となるノードがハイライト表示されます。 lowerCamelHumpsを使用した簡易検索とノードの絞り込みもサポートされています。

dotPeekによるアセンブリメタデータの調査

アセンブリメタデータの調査

dotPeek はアセンブリメタデータを調査し、その中にあるすべての項目(テーブル、BLOB、文字列など)を探るのにも役立ちます。 Metadata ノードの下では、BLOB項目の値、PEファイルヘッダー、メタデータテーブル項目の使用状況を調査できます。

アセンブリツリーのその他の場所と同様、メタデータ項目をダブルクリックして対応するコードのデコンパイルや表示を行えます。

アセンブリ依存関係ダイアグラム

アセンブリ間の依存関係を表示

アセンブリ間の相互依存関係を確認したい場合は、Assembly Explorerで複数のアセンブリを選択し、dotPeekにアセンブリ依存関係ダイアグラムを表示するよう伝えてください。

これにより、選択したアセンブリ間に存在するすべての関係が、それらの参照先に基づいて可視化されます。

dotPeekのダウンロード

無料、ライセンスキーは必要ありません