There are two comprehensive tools which will do the job perfectly.
You can use Reflector or its open-source replacement ILSpy or one of similar tools:
http://en.wikipedia.org/wiki/.NET_Reflector[
^],
http://ilspy.net/[
^].
By the way, additionally, this is one of effective tools to learn CIL. It can be very useful, and I don't know a good reference on the language. CIL knowledge is very important, in particular, for using
System.Reflection.Emit
, an extremely powerful library.
You can write code in one language, compile it, load the assembly with ILSpy, choose another language, and decompile the code part you need. The accuracy of the results is very good. And even the readability of the project files and their structure is excellent: clear and accurate.
And this is a stand-along open-source code convertor:
http://codeconvert.codeplex.com/[
^].
—SA