No Source? No PDB? No Problem, ILSpy!

This post has been republished via RSS; it originally appeared at: Channel 9.

It's been three years since we've last highlighted ILSpy. Yeah, three years! ILSpy, the Visual Studio Extension. And the first time, three years before that! I spy with my little eye... ILSpy.

Doing the math, yeah, we've been following ILSpy for six+ years. That's like a century in Internet Years...

So, does that mean ILSpy faded away? Got lost in all those years?

Nope! ILSpy is very alive and very well, with active (as in within the last two hours of my writing this) work on v3.

Given how long it's been since we last covered ILSpy, I think a review is in order...

ILSpy

ILSpy is the open-source .NET assembly browser and decompiler.

ILSpy Features

  • Assembly browsing
  • IL Disassembly
  • Support C# 5.0 “async”
  • Decompilation to C#
    • Supports lambdas and ‘yield return’
    • Shows XML documentation
  • Decompilation to VB
  • Saving of resources
  • Save decompiled assembly as .csproj
  • Search for types/methods/properties (substring)
  • Hyperlink-based type/method/property navigation
  • Base/Derived types navigation
  • Navigation history
  • BAML to XAML decompiler
  • Save Assembly as C# Project
  • Find usage of field/method
  • Extensible via plugins (MEF)
  • Assembly Lists

...

So 3.0? It's available on GitHub, both in source form, binary and even vsix!

Releases 

3.0 Preview 2 

What's new compared to Preview 1?

  • (Partial) support for nullables, foreach, using
  • New: Open assembly from Nuget package
  • A lot of small-ish fixes
  • The VSIX is here! And it supports output from netstandard and netcore projects.
  • The -alpha4 Nuget package corresponds to this release.

...

3.0 Preview 1

...

This is a preview release! Framework requirements: .NET 4.6.1 or higher.

Language support status can be found in issue #829, please note that this is a live issue and might have changed after this preview has been published. Notable missing feature compared to older versions: nullables. (only fully implemented features have a checkmark in the status issue). Before opening an issue ("X doesn't decompile correctly") please go check with issue #829!

New: support for .NET Standard and .NET Core assemblies.

Missing: decompile to VB. Contributions welcome because we concentrate solely on C#.

Architectural changes are documented in the wiki (Note: roadmap not up to date as of this release). Important points to note (design goals): the decompiler should always create semantically correct and compilable code.

...

And of course the repo;

icsharpcode/ILSpy

image

Check it out in action, ILSpy opening ILSpy... :)

image



Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.