ilspy-decompile について
ILSpy でコンパイル済み .NET アセンブリを調べるスキルです。アセンブリの検索から、全体、特定の型、IL コードの逆コンパイルまでを案内します。
主な機能
- 01アセンブリを標準出力へ逆コンパイル
- 02出力をフォルダーに保存
- 03指定した型の逆コンパイル
- 04IL コードの確認
- 05一般的なアセンブリパスの検索
活用シーン
- 01コンパイル済み .NET ライブラリの動作理解
- 02アセンブリ内の特定の型の調査
- 03IL 出力の確認
- 04NuGet やビルドフォルダーでのアセンブリ検索
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aaronontheweb/ dotnet-skills --skill ilspy-decompileインストール後、Claude Code で/ilspy-decompileを入力して読み込まれたか確認します。
詳細
ILSpy を使用した .NET アセンブリの逆コンパイル
コンパイル済みアセンブリを逆コンパイルして、.NET コードの内部動作を理解するには、このスキルを使用してください。
前提条件
- .NET SDK がインストールされていること
- ILSpy コマンドラインツールが、次のいずれかの方法で使用できること:
dnx ilspycmd(SDK またはランタイムで使用できる場合)dotnet tool install --global ilspycmd
どちらの形式も以下に示します。お使いの環境で動作する方を使用してください。
注:ILSpyCmd のオプションは、バージョンによって若干異なる場合があります。
ilspycmd -hで、サポートされているフラグを必ず確認してください。
クイックスタート
# Decompile an assembly to stdout
ilspycmd MyLibrary.dll
# or
dnx ilspycmd MyLibrary.dll
# Decompile to an output folder
ilspycmd -o output-folder MyLibrary.dll
よく使用される .NET アセンブリの場所
NuGet パッケージ
~/.nuget/packages/<package-name>/<version>/lib/<tfm>/
.NET ランタイムライブラリ
dotnet --list-runtimes
.NET SDK の参照アセンブリ
dotnet --list-sdks
参照アセンブリには実装が含まれていません。
プロジェクトのビルド出力
./bin/Debug/net8.0/<AssemblyName>.dll
./bin/Release/net8.0/publish/<AssemblyName>.dll
基本的なワークフロー
- 理解したい内容を特定します
- アセンブリの場所を特定します
- 型を一覧表示します
- 対象を逆コンパイルします
コマンド
基本的な逆コンパイル
ilspycmd MyLibrary.dll
ilspycmd -o ./decompiled MyLibrary.dll
ilspycmd -p -o ./project MyLibrary.dll
対象を指定した逆コンパイル
ilspycmd -t Namespace.ClassName MyLibrary.dll
ilspycmd -lv CSharp12_0 MyLibrary.dll
IL コードを表示する
ilspycmd -il MyLibrary.dll
最新の .NET ビルドに関する注意事項
- ReadyToRun イメージでは、可読性が低下する場合があります
- トリミングされたビルドや AOT ビルドでは、コードが省略される場合があります
- トリミングされていないビルドを推奨します
法的な注意事項
アセンブリの逆コンパイルには、ライセンス上の制限が適用される場合があります。
コメント
Markdown 対応