I need to convert the IL to c# code. I have an assembly and I am reading this assembly. I get MethodBody from MethodInfo and the methodbody has a method GetILAsByteArraY() which returns a byte array now I want to convert this IL to C# code. Please help me out in solving this.
-
1What do you need this for? If you describe your situation in somewhat more detail, maybe we can suggest more than .NET Reflector.Anton Tykhyy– Anton Tykhyy2009-03-15 16:14:05 +00:00Commented Mar 15, 2009 at 16:14
-
1@Anton We'd probably be better off not understanding this hackery.BC.– BC.2009-03-15 16:15:37 +00:00Commented Mar 15, 2009 at 16:15
-
Did anyone suggest Reflector yet?Michael Burr– Michael Burr2009-03-15 16:20:31 +00:00Commented Mar 15, 2009 at 16:20
-
Obviously, he wants to do this from code.Robert Jeppesen– Robert Jeppesen2009-09-07 13:26:51 +00:00Commented Sep 7, 2009 at 13:26
-
ILSPy has the code in github github.com/icsharpcode/ILSpy and you can take what you like to use from itWalter Verhoeven– Walter Verhoeven2020-05-20 12:14:52 +00:00Commented May 20, 2020 at 12:14
12 Answers
Don't reinvent the wheel; use Lutz Roeder's .NET Reflector.
2 Comments
The Lutz Roeder reflector was purchased and is no longer available for free download.
There is now a free (once again) tool called ILSpy. I've found it to be very good, and it will not only generate C# code from IL but will also create a .csproj project if decompiling an entire DLL assembly.
Re-Inventing the wheel surely a better way to learn! you will have to create your own class that would convert iL to C#.This requires the knowledge of Intermediate language.
I assume you have already converted the Byte Array to IL instructions just like we see in ildasm.exe,Using Reflection.Emit.OpCodes,OpCode.OperandType,BitConvertor.ReadByte(),BitConvertor.ReadInt32 etc.
1 Comment
If you want to do it yourself, you could start from the old Cecil.Decompiler and enhance it, see the source code and an old post of Jb. Evain announcing the project (Link down).
1 Comment
Can't you do this with Reflector?
You can load an assembly and view it as VB.net/C#/IL...
Comments
For the search engine people, Reflector ain't free anymore. But a newer and better and not to mention FREE tool is being offered from telerik called JustDecompile. I just downloaded this and its so awesome and its just beta. Apparently telerik promises free forever.
Comments
You should just use .NET Reflector if you have the assembly. Also try the file gen addon.
Comments
There is no tool in the BCL that will do this; however, there is a great tool called Reflector, which you can write your own add-ins for. So you could probally use this to get the data you want.
Comments
Reflector does this. Perhaps you could use Reflector against Reflector and learn how it handles the problem.
You might also say why you want to do this - there may be a better solution to your overall problem.