開放原始碼的 .NET 反組譯工具 - ILSpy


ILSpy 的操作介面有點像 .NET Reflector,雖然功能比較少一點,但基本上還算夠用。就 open source 軟體而言,其實挺不錯的。如果不想花錢買 .NET Reflector,不妨試試 ILSpy。


[2012-01-04 更新]

用這段簡單的 LINQ 範例來比較 ILSpy 和 Reflector 反組譯成 C# 的差異:

        public void Linq1()
        {
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
 
            var lowNums =
                from n in numbers
                where n < 5
                select n;
 
            Console.WriteLine("Numbers < 5:");
            foreach (var x in lowNums)
            {
                Console.WriteLine(x);
            }
        }

使用 Reflector 反組譯的結果:


使用 ILSpy 反組譯的結果:

就這個例子而言,程式語法並沒有太大差異。不過,ILSpy 開發社群的部落格上有一篇文章,是 2011 年 4 月發表的,裡面提到:
We're now close to supporting all features in C# 3.0, the only major missing item is expression tree support. So LINQ queries currently decompile into query syntax only if they're compiled into delegates (LINQ-to-Objects, Parallel LINQ), not if they're compiled into expression trees (LINQ-to-SQL etc.).
所以,目前的 ILSpy 1.0 版尚未支援 expression tree。根據官網的說法,這部分將於 2.0 版實現。

Post Comments

技術提供:Blogger.