.NET Assembly Decompilation with ILSpy Use this skill to understand how .NET code works internally by decompiling compiled assemblies. Prerequisites .NET SDK installed ILSpy command-line tool available via one of the following: dnx ilspycmd (if available in your SDK or runtime) dotnet tool install --global ilspycmd Both forms are shown below. Use the one that works in your environment. Note: ILSpyCmd options may vary slightly by version. Always verify supported flags with ilspycmd -h . Quick start
Decompile an assembly to stdout
ilspycmd MyLibrary.dll
or
dnx ilspycmd MyLibrary.dll
Decompile to an output folder
ilspycmd -o output-folder MyLibrary.dll Common .NET Assembly Locations NuGet packages ~/.nuget/packages/ < package-name
/ < version
/lib/ < tfm
/ .NET runtime libraries dotnet --list-runtimes .NET SDK reference assemblies dotnet --list-sdks Reference assemblies do not contain implementations. Project build output ./bin/Debug/net8.0/ < AssemblyName
.dll ./bin/Release/net8.0/publish/ < AssemblyName
.dll Core workflow Identify what you want to understand Locate the assembly List types Decompile the target Commands Basic decompilation ilspycmd MyLibrary.dll ilspycmd -o ./decompiled MyLibrary.dll ilspycmd -p -o ./project MyLibrary.dll Targeted decompilation ilspycmd -t Namespace.ClassName MyLibrary.dll ilspycmd -lv CSharp12_0 MyLibrary.dll View IL code ilspycmd -il MyLibrary.dll Notes on modern .NET builds ReadyToRun images may reduce readability Trimmed or AOT builds may omit code Prefer non-trimmed builds Legal note Decompiling assemblies may be subject to license restrictions.