<< All versions
Skill v1.0.1
currentAutomated scan100/100davidfowl/dotnet-skillz/ilspy-decompile
1 files
──Details
PublishedSeptember 30, 2026 at 02:32 PM
Content Hashsha256:27def08111038b23...
Git SHAca19e87d1118
Bump Typepatch
──Files
Files (1 file, 5.1 KB)
SKILL.md5.1 KBactive
SKILL.md · 202 lines · 5.1 KB
version: "1.0.1" name: ilspy-decompile description: Understand implementation details of .NET code by decompiling assemblies. Use when the user wants to see how a .NET API works internally, inspect NuGet package source, view framework implementation, or understand compiled .NET binaries. allowed-tools: Bash(dnx:*)
.NET Assembly Decompilation with ILSpy
Use this skill to understand how .NET code works internally by decompiling compiled assemblies.
Quick start
bash
# Decompile an assembly to stdout (no install needed with .NET 10+)dnx ilspycmd MyLibrary.dll# Decompile to an output folderdnx ilspycmd -o output-folder MyLibrary.dll
Common .NET Assembly Locations
NuGet Packages
bash
# Windows~/.nuget/packages/<package-name>/<version>/lib/<tfm>/# Example: Newtonsoft.Json~/.nuget/packages/newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll# Example: Microsoft.Extensions.DependencyInjection~/.nuget/packages/microsoft.extensions.dependencyinjection/8.0.0/lib/net8.0/Microsoft.Extensions.DependencyInjection.dll
.NET Runtime Libraries
bash
# Find .NET install locationdotnet --list-runtimes# Windows typical pathsC:/Program Files/dotnet/shared/Microsoft.NETCore.App/<version>/C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/<version>/# Linux/macOS typical paths/usr/share/dotnet/shared/Microsoft.NETCore.App/<version>//usr/share/dotnet/shared/Microsoft.AspNetCore.App/<version>/# Example: System.Text.Json from runtimeC:/Program Files/dotnet/shared/Microsoft.NETCore.App/8.0.0/System.Text.Json.dll
.NET SDK Reference Assemblies
bash
# Find SDK locationdotnet --list-sdks# Reference assemblies (design-time facades)C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/<version>/ref/net8.0/
Project Build Output
bash
# Debug build./bin/Debug/net8.0/<AssemblyName>.dll# Published output./bin/Release/net8.0/publish/<AssemblyName>.dll
Core workflow
- Identify what you want to understand (API, class, method)
- Locate the assembly containing that code
- Use
dnx ilspycmd -l classto find the exact type name - Decompile the specific type with
-t
Commands
Basic Decompilation
bash
# Decompile to stdoutdnx ilspycmd MyLibrary.dll# Decompile to output directorydnx ilspycmd -o ./decompiled MyLibrary.dll# Decompile as compilable projectdnx ilspycmd -p -o ./project MyLibrary.dll# Decompile with nested namespace foldersdnx ilspycmd -p -o ./project --nested-directories MyLibrary.dll
Targeted Decompilation
bash
# Decompile a specific typednx ilspycmd -t Namespace.ClassName MyLibrary.dll# Decompile with specific C# versiondnx ilspycmd -lv CSharp12_0 MyLibrary.dll# Decompile with reference path for dependenciesdnx ilspycmd -r ./dependencies MyLibrary.dll
View IL Code
bash
# Show IL code instead of C#dnx ilspycmd -il MyLibrary.dll# Show IL for specific typednx ilspycmd -il -t Namespace.ClassName MyLibrary.dll
List Types
bash
# List all classesdnx ilspycmd -l class MyLibrary.dll# List interfacesdnx ilspycmd -l interface MyLibrary.dll# List structsdnx ilspycmd -l struct MyLibrary.dll# List enumsdnx ilspycmd -l enum MyLibrary.dll# List delegatesdnx ilspycmd -l delegate MyLibrary.dll
Options
bash
# Show helpdnx ilspycmd -h# Disable update check (useful for CI/automation)dnx ilspycmd --disable-updatecheck MyLibrary.dll# Remove dead codednx ilspycmd --no-dead-code MyLibrary.dll
Example: Understand how JsonSerializer works
bash
# Find System.Text.Json in the runtimedotnet --list-runtimes# Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]# List classes to find JsonSerializerdnx ilspycmd -l class "C:/Program Files/dotnet/shared/Microsoft.NETCore.App/8.0.0/System.Text.Json.dll"# Decompile JsonSerializerdnx ilspycmd -t System.Text.Json.JsonSerializer "C:/Program Files/dotnet/shared/Microsoft.NETCore.App/8.0.0/System.Text.Json.dll"
Example: Inspect a NuGet package implementation
bash
# Decompile Polly's retry logicdnx ilspycmd -t Polly.Retry.RetryPolicy ~/.nuget/packages/polly/8.0.0/lib/netstandard2.0/Polly.dll# Decompile entire package to project for explorationdnx ilspycmd -p -o ./polly-src ~/.nuget/packages/polly/8.0.0/lib/netstandard2.0/Polly.dll
Example: See how ASP.NET Core handles requests
bash
# Find the ASP.NET Core runtime# C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\8.0.0\# Decompile the Kestrel serverdnx ilspycmd -l class "C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/8.0.0/Microsoft.AspNetCore.Server.Kestrel.Core.dll"dnx ilspycmd -t Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer "C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/8.0.0/Microsoft.AspNetCore.Server.Kestrel.Core.dll"
Example: Compare C# and IL
bash
# View C# sourcednx ilspycmd -t MyNamespace.MyClass MyLibrary.dll# View IL code for same typednx ilspycmd -il -t MyNamespace.MyClass MyLibrary.dll
C# Language Versions
Available versions for -lv option:
- CSharp1 through CSharp12_0
- Latest, Preview