使用Lutz Roeder’s .NET Reflector反编译.NET Compact Framework程序集

 

使用.NET Reflector(5.0.25)直接反编译.NET Compact Framework程序集System.Windows.Forms.dll时发现反编译的结果是只有方法的签名而没有实现,如下图:

 

反复几次测试后发现问题在于没有选择正确的程序集进行反编译,我选择System.Windows.Forms.dll来自C:\Program Files\Microsoft.NET\SDK\CompactFramework

\v2.0\WindowsCE\System.Windows.Forms.dll,这也是.NET CF  Pocket PC 2003项目默认引用的程序集的路径。对这个程序集进行反编译的结果是只有方法的签名而没有实现。但对C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\Debugger\BCL\System.

Windows.Forms.dll进行反编译后得到了想要的结果,方法中有实现代码:

 

 

因此想要反编译查看.NET CF程序集时必须要注意需要要反编译正确的程序集。定位到可以反编译出实现代码的程序集有一个快捷的办法,从Reflector程序中选择File->Open List,再点击Add添加一个程序集列表,然后双击新添加的列表,从当前的程序集列表中选择.NET Compact Framework 2.0作为新的程序集列表,这样就可以快速定位到反编译出实现代码的程序集。

 

为什么.NET CF同一个程序集具有版本的差别,而且反编译的结果不相同?希望知道的网友告诉一下。

 

posted on 2007-07-01 16:20  yoyolion  阅读(1060)  评论(0编辑  收藏  举报