The JustDecompile .NET decompiler engine has been open-sourced
github.comHow does this compare to dotPeek from JetBrains? https://www.jetbrains.com/decompiler/
Much better for newer features... for async/await dotpeek would show state machine ( which was actually cool to see), but JustDecompile would actually show me async await in decompiled code.
ALSO, coolest feature is decompile to csproj ... very nice ;)
I had the opposite experience. DotPeek created much better code. using statements were decompiled as usings, JustDecompile produced try/finally blocks.
DotPeek has the option to export decompiled code to a project and solution.
Agreed. I used it just for the decompile to project.
Sorry I just downvoted you, fat fingered on an ipad. They really need to fix those on mobile.
Anyway, intended to say that in my experience, all 4 major decompilers get tripped up on slightly different things. Between dotpeek, reflector, ilspy, and justdecompile, none could get everything right and I have to take pieces from each to get something buildable again.
It would be so kind of you to create an github issue for things you find ILSpy gets wrong. https://github.com/icsharpcode/ILSpy/issues
http://ilspy.net/ is what I generally use. Functionally modeled after .NET Reflector.
A .NET decompiler written in .NET: I bet "let's try it on itself!" was not an uncommon thought among its users already.
It wasn't this one, but years ago I remember using a decompiler to look through things like the system libraries and the (relatively few) apps written in it at the time, and it was quite interesting how much metadata was available (if it hadn't been obfuscated). I think it's fun and enlightening to take things apart, see how they work, and modify them, so that aspect of .NET really appealed to me, but I still prefer native code for its efficiency and succinctness...
I remember in the 1.x and early 2.x timeframe of .Net trying to replicate functionality similar to the ASP.Net internals, but with some minor changes... being able to peak into the internals was incredibly useful, even if I did hit some walls... The changes made in support of MVC were really helpful in terms of being able to do more. I can't even remember the names of some of the first Alt.Net frameworks to gain momentum before it.
I'm really happy to see more of .Net becoming open. I'd all but written it off in terms of new development. If the support for deploying in Linux/Docker becomes better, I'll be following this with great interest (to paraphrase Palpatine).
Before Minecraft, there was "Infiniminer" - a decompiler was involved:
Zachtronics discontinued development of the game less than a month after its first release as the result of its source code leak. As Barth had not obfuscated the C# .NET source code of the game, it was decompiled and extracted from the binaries. Hackers modified the code to make mods, but also started making clients that would target vulnerabilities in the game as well as build incompatible game forks that fragmented its user base. Barth, who was making the game for free, then lost interest and dropped the project, as development of the game had become too difficult. http://en.wikipedia.org/wiki/Zachary_Barth
"Proto-MineCraft Abandoned Due To Epic Error" article: http://www.rockpapershotgun.com/2011/01/20/proto-minecraft-a...
The Minecraft mods-support relies on a decompiler too: http://minecraft.gamepedia.com/Programs_and_editors/Minecraf...
Is it really an "epic error" to allow someone to see the source code of your program?
It's the headline of the rockpapershotgun.com article, that's simply their writing style. I added quote around the title, to make it clear that it's the articles title and not my opinion.
Sorry, I realize that; I just take issue with their claim.
the one i was most familiar with was reflector. you could change the languages it was decompiled to from c# to visual basic.
I'll never forget that morning I started reflector and it deleted itself from my system.
We will never let redgate forget ;)
With the release of Roslyn wont writing things like these be a lot easier?
This tool helped a lot back then. I would also use DotPeek.