Red Gate's .NET Reflector就可以进行MSIL和C#的互相转换。
下载地址:http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1
下载免费的版本就行。
Reflector将MSIL转换为C#?我试了,无法打开IL文件,是不是我的方法不对呢? 我想要的效果是:我给它一段MSIL代码,然后给我转换成C#代码。
|
园豆:210
(菜鸟二级)
|
2010-10-13 10:30
@烈火★寒冰:
将IL编译成dll或exe就可以打开了啊。ILAsm可以编译的IL代码的。
|
园豆:4893
(老鸟四级)
|
2010-10-13 12:35
@烈火★寒冰:那么就先编译为程序集吧。
|
园豆: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
@烈火★寒冰:
报什么错误啊?
|
园豆:4893
(老鸟四级)
|
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)是怎么编译出来的?
|
园豆:4893
(老鸟四级)
|
2010-10-13 15:27
这个我也不清楚,只能确定是.net做的,其他的情况一概不清楚。
|
园豆:210
(菜鸟二级)
|
2010-10-13 17:59
真是不好意思。。。居然是我的系统问题,不过不是系统版本问题,具体也不清楚是哪里出。换了别的系统可以用Reflector看到完整的c#代码。
----------非常感谢大侠的帮忙-----------
|
园豆:210
(菜鸟二级)
|
2010-10-14 10:20