我需要将IL转换为c#代码。 我有一个集会,我正在阅读这个集会。 我从MethodInfo获取MethodBody,方法体有一个方法GetILAsByteArraY() 现在返回一个字节数组我希望将这个IL转换为C#代码。 请帮我解决这个问题。
答案 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 code和an 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。也许你应该看一下。