将IL转换为C#代码

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

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

购买了Lutz Roederreflection器,不再提供免费下载。

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

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

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

如果你想自己做,你可以从旧的Cecil.Decompiler开始并增强它,查看源代码和Jb的旧post。 Evain宣布该项目 (Link down)。

让我们看看我是否能够首先获得它: .NET Reflector ! 这真的应该是FAQ …

你不能用Reflector做到这一点吗?

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

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

如果你有程序集,你应该只使用.NET Reflector 。 也尝试文件gen插件。

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

reflection器做到了这一点。 也许您可以使用Reflector对抗Reflector并了解它如何处理问题。

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

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

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