首页 新闻 会员 周边

如何将MSIL转换为C#源代码?

1
悬赏园豆:10 [已解决问题] 解决于 2010-10-14 10:21

有什么方法转换没?有没有现在的工具?

问题补充: 我想要的效果是:我给它一段MSIL代码,然后给我转换成C#代码。
烈火★寒冰的主页 烈火★寒冰 | 菜鸟二级 | 园豆:210
提问于:2010-10-13 09:57
< >
分享
最佳答案
0

Red Gate's .NET Reflector就可以进行MSIL和C#的互相转换。

下载地址:http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1

下载免费的版本就行。

收获园豆:10
wang_yb | 老鸟四级 |园豆:4891 | 2010-10-13 10:14
Reflector将MSIL转换为C#?我试了,无法打开IL文件,是不是我的方法不对呢? 我想要的效果是:我给它一段MSIL代码,然后给我转换成C#代码。
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 10:30
@烈火★寒冰: 将IL编译成dll或exe就可以打开了啊。ILAsm可以编译的IL代码的。
wang_yb | 园豆:4891 (老鸟四级) | 2010-10-13 12:35
@烈火★寒冰:那么就先编译为程序集吧。
Jeffrey Zhao | 园豆:1629 (小虾三级) | 2010-10-13 13:39
这主意很好。不过,现在又遇到一个问题了,这个IL里面使用了别的类,用别的类创建了实例。用ILASM时,出现错误而无法生成dll或exe。这个怎么解决呢? PS:这个IL是从一个exe文件(假设是my.exe)转换过来的。直接看my.exe时,Reflector报错了,这个错误暂时没有找到解决办法,报错的结果是:有一个方法只反编译出了一部分代码,后面就断了。但是可以反编译出完整的IL。
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 13:50
@烈火★寒冰: 报什么错误啊?
wang_yb | 园豆:4891 (老鸟四级) | 2010-10-13 14:29
ERROR:Reference to undefined class "XXX"。意思是引用了未定义的类。
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 14:45
ERROR:Reference to undefined class "XXX"。居然是由编码问题引起的,类名用了日文,修改为英文后不出错了。但是,现在新的问题又来了,Reflector出来的IL里面有这句: L_0000: newobj instance void [mscorlib]System.Collections.Generic.Dictionary`2<string, string>::.ctor(),这句出错了:error :syntex error at token "<" in : L_0000: newobj instance void [mscorlib]System.Collections.Generic.Dictionary`2<string, string>::.ctor()
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 15:14
上述问题怎么解决呢?
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 15:14
@烈火★寒冰:这句是new一个Dictionary<string, string>类型,本身没有错。应该是其他地方引起的吧。 有点奇怪的是既然Reflector出来的IL有错,那个exe文件(假设是my.exe)是怎么编译出来的?
wang_yb | 园豆:4891 (老鸟四级) | 2010-10-13 15:27
这个我也不清楚,只能确定是.net做的,其他的情况一概不清楚。
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 17:59
真是不好意思。。。居然是我的系统问题,不过不是系统版本问题,具体也不清楚是哪里出。换了别的系统可以用Reflector看到完整的c#代码。 ----------非常感谢大侠的帮忙-----------
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-14 10:20
其他回答(1)
0

 使用 NGen.exe 的安装时代码生成

http://msdn.microsoft.com/zh-cn/library/ht8ecch6%28VS.90%29.aspx

邀月 | 园豆:25475 (高人七级) | 2010-10-13 11:43
NGen.exe是将 MSIL 程序集转换为本机代码,其作用与 JIT 编译器极为相似。而不是转换为c#代码!
支持(0) 反对(0) 烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-13 13:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册