所有的讨论都假设你已经看过了.Net framework 2.0 beta1。
如果你到.Net framework 2.0 beta1 的目录上看看fusion.dll,你会发现fusion.dll不可思议的小。
H:\WINDOWS\Microsoft.NET\Framework\v2.0.40607>dir fusion.dll
Volume in drive H has no label.
Volume Serial Number is E0AF-5950
Directory of H:\WINDOWS\Microsoft.NET\Framework\v2.0.40607
06/24/2004 10:34 PM 6,656 fusion.dll
1 File
6,656 bytes
0 Dir
10,966,089,728 bytes free
H:\WINDOWS\Microsoft.NET\Framework\v2.0.40607>cd..
H:\WINDOWS\Microsoft.NET\Framework>cd v1.1.4322
H:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>dir fusion.dll
Volume in drive H has no label.
Volume Serial Number is E0AF-5950
Directory of H:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
02/24/2003 04:42 PM 282,624 fusion.dll
1 File
282,624 bytes
0 Dir
10,966,081,536 bytes free
fusion.dll在2.0里只有6K大,比1.1的时候小了40倍。就是说fusion.dll几乎不存在了。
事实上是,fusion.dll和mscorwks.dll合并了。以前fusion.dll里的代码,和新加的代码,都在mscorwks.dll里。现在的fusion.dll的存在,只是为了backward compatibility。它做的所有的事情,只是forward到mscorwks.dll。
如果你仔细的话,你会发现mscorsvr.dll不见了。Mscorsvr.dll也和mscorwks.dll合并了。从此以后你再也不能通过判断mscorsvr.dll来决定你是用Server GC还是WorkStation GC。这是为什么System.Environment 新加了IsServerGC 的原因 (http://lab.msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/P_System_Environment_IsServerGC.asp)
另外,mscorsn.dll其实也和mscorwks.dll合并了。
所以现在mscorwks.dll = mscorwks.dll + fusion.dll + mscorsn.dll + mscorsvr.dll。
看看mscorwks.dll大小的变化就知道了。
H:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>dir mscorwks.dll
Volume in drive H has no label.
Volume Serial Number is E0AF-5950
Directory of H:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
02/24/2003 04:42 PM 2,482,176 mscorwks.dll
1 File
2,482,176 bytes
0 Dir
10,965,708,800 bytes free
H:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>dir ..\v2.0.40607\mscorwks.dll
Volume in drive H has no label.
Volume Serial Number is E0AF-5950
Directory of H:\WINDOWS\Microsoft.NET\Framework\v2.0.40607
06/25/2004 01:13 PM 5,176,320 mscorwks.dll
1 File
5,176,320 bytes
0 Dir
10,965,708,800 bytes free
合并的原因,是因为performance。Windows认为CLR里文件太多。最常用的代码应该都放到一起。这是为什么你看到现在的巨大的mscorwks.dll的原因。这也是我另一篇文章(http://blogs.msdn.com/junfeng/archive/2004/02/23/78139.aspx)的证明。