The name of this site and the name of our product regularly bring in visitors looking to decompile a .NET assembly. VBReFormer handles Visual Basic 5 and 6 only. .NET is not covered, and is not planned for any future version. The tools below do that job, free of charge.

The tools

ToolLicencePlatformsDistinguishing featureStatus
ILSpyMIT, open sourceWindows desktop application, VS Code extension on every platform, ilspycmd command linePDB generation, metadata browsing, engine reusable as a NuGet library (ICSharpCode.Decompiler)Maintained
dnSpyExGPLv3, open sourceWindowsBuilt-in debugger: step through decompiled code, edit the assembly and save it backMaintained. The original dnSpy repository has been archived since 2020; dnSpyEx is the active fork
dotPeekFree, proprietary (JetBrains)WindowsExport to a Visual Studio project (.csproj), symbol server, PDB generationMaintained
de4dotGPLv3, open sourceWindowsA deobfuscator rather than a decompiler: run it before the tools above on a protected assemblyOriginal repository dormant, community forks carry the work on, notably de4dot-cex

Tool names link to the official download pages. Status checked in August 2026.

Which one to use

  • Reading the code of an assembly — ILSpy. The lightest to install, and the only one whose engine can be reused inside your own tooling.
  • Debugging or modifying an assembly — dnSpyEx. It sets breakpoints in decompiled code and writes the modified binary back.
  • Starting again from a Visual Studio project — dotPeek, which exports a .csproj directly.
  • Protected assembly — de4dot first, then any of the others.

What .NET decompilation produces

An assembly keeps the names of types, members and parameters along with full signatures: the output stays close to the original code and usually recompiles. Two limits are worth knowing. Local variable names are not in the assembly but in the PDB file, which is rarely shipped alongside the binary. And constructs the compiler rewrites — lambdas, closures, iterators, async methods — come back under generated names such as <>c__DisplayClass0_0, with a structure equivalent to what was written but different from it.

If the file is not .NET

None of these tools will open a Visual Basic 5 or 6 executable: the format has nothing in common with a .NET assembly, and there it is the difference between P-Code and Native Code that decides what can be recovered. That is what VBReFormer covers; its free edition identifies a binary's compilation mode and lets you inspect its contents.