将IL转换为C#代码

时间:2009-03-15 16:08:24

标签: c# .net

我需要将IL转换为c#代码。 我有一个集会,我正在阅读这个集会。 我从MethodInfo获取MethodBody,方法体有一个方法GetILAsByteArraY() 现在返回一个字节数组我希望将这个IL转换为C#代码。 请帮我解决这个问题。

12 个答案:

答案 0 :(得分:20)

不要重新发明轮子;使用Lutz Roeder的.NET Reflector

答案 1 :(得分:15)

购买Lutz Roeder反光板,不再可以免费下载。

现在有一个名为ILSpy的免费(再次)工具。我发现它非常好,它不仅会生成IL的C#代码,而且如果反编译整个DLL程序集也会创建一个.csproj项目。

答案 2 :(得分:9)

重新发明轮子肯定是一种更好的学习方式! 你将不得不创建自己的类,将iL转换为C#。这需要中级语言的知识。

我假设您已经将字节数组转换为IL指令,就像我们在ildasm.exe中看到的那样,使用Reflection.Emit.OpCodes,OpCode.OperandType,BitConvertor.ReadByte(),BitConvertor.ReadInt32等。

答案 3 :(得分:3)

如果您想自己动手,可以从旧的Cecil.Decompiler开始并对其进行增强,请参阅the source codean old post of Jb. Evain announcing the project(链接向下)。

答案 4 :(得分:1)

让我们看看我是否设法先获得它:.NET Reflector!这真的应该是常见问题......

答案 5 :(得分:1)

你不能用Reflector吗?

您可以加载程序集并将其视为VB.net/C#/IL ...

答案 6 :(得分:1)

对于搜索引擎人来说,Reflector不再是免费的。但是,名为JustDecompile的telerik提供了一个更新,更好,更不用说免费工具。我刚刚下载了它,它非常棒,只是测试版。显然,telerik承诺永远免费。

答案 7 :(得分:0)

如果你有集会,你应该使用.NET Reflector。另请尝试file gen addon.

答案 8 :(得分:0)

BCL中没有工具可以做到这一点;但是,有一个很棒的工具叫Reflector,您可以编写自己的加载项。因此,您可以使用它来获取所需的数据。

答案 9 :(得分:0)

Reflector这样做。也许您可以使用Reflector对抗Reflector并了解它如何处理问题。

您可能还会说为什么要这样做 - 可能会有更好的解决方案解决您的整体问题。

答案 10 :(得分:0)

让我成为第一个建议你抓住红门反射器副本的人。

答案 11 :(得分:0)

如果你不想重新发明轮子,也许你应该尝试Dis#... 它几乎是转换代码的最佳工具 NetDASM有一个工具,可以让你将C#转换为IL。也许你应该看一下。