18

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.

5
  • 1
    What do you need this for? If you describe your situation in somewhat more detail, maybe we can suggest more than .NET Reflector. Commented Mar 15, 2009 at 16:14
  • 1
    @Anton We'd probably be better off not understanding this hackery. Commented Mar 15, 2009 at 16:15
  • Did anyone suggest Reflector yet? Commented Mar 15, 2009 at 16:20
  • Obviously, he wants to do this from code. Commented 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 it Commented May 20, 2020 at 12:14

12 Answers 12

23

Don't reinvent the wheel; use Lutz Roeder's .NET Reflector.

Sign up to request clarification or add additional context in comments.

2 Comments

I think it is clearly obvious that he is trying to create another wheel like that of .NET Reflector and he wants to know how it's made. Lutz shouldn't necessarily be the only man in the world who knows how to make it.
@HasanKhan given OP's choice of answer he is pretty happy with Lutz being the only man :)
16

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.

1 Comment

Code for getting C# from assembly ?
9

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

stackoverflow.com/questions/69423090/… This is my question, How can we get C# from IL ?
3

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

Fixed the first one, can't do anything about the second one as I don't know why he put his blog offline even if he still reference it on twitter.
1

Let's see if I manage to get it in first: .NET Reflector! This really should be a FAQ...

Comments

1

Can't you do this with Reflector?

You can load an assembly and view it as VB.net/C#/IL...

Comments

1

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

0

You should just use .NET Reflector if you have the assembly. Also try the file gen addon.

Comments

0

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

0

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.

2 Comments

Reflectors internals were obfuscated using non-printables (at least lutz did that). While yes you could reflect on itself a better question would is it really worth that...
Yes, that's what I suspected. It's why I asked him why he wants to do it.
0

Let me be the first to suggest you grab a copy of Red Gate's Reflector.

1 Comment

@ck Well, you answer a question and after hitting Submit fifty other people have already answered. O well...
0

Maybe you should try Dis# if you don't wanna re-invent the wheel... It's almost the best tool in converting the code NetDASM has a tool that lets you convert C# to IL. maybe you should take a look at that.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.