日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NETFramework十年回顧體積越小功能越強(qiáng)

在Visual Studio 2010正式發(fā)布后,.NET平臺也差不多走過了十多年的時(shí)間。這十幾年.NET Framework的發(fā)展是怎樣的一個(gè)過程,本文將為您揭示.NET Framework十年發(fā)展路。向您推薦《Visual Studio進(jìn)化史》專題配合您了解這篇文章。

自2000年6月22日微軟向全球宣布自己的.NET戰(zhàn)略,到現(xiàn)在已經(jīng)十年多了。作為.NET戰(zhàn)略的基礎(chǔ),Microsoft .NET Framework 也已經(jīng)發(fā)行了多個(gè)版本。下面,我們就來看看這些年來微軟到底發(fā)布了哪些 .NET Framework 版本。

 
 
 
 
  1. Framework  CLR and Assemblies          Release  
  2. ----------------------------------------------------------  
  3. 1.0 RTM    1.0.3705.0                  Released with VS.NET (aka VS.NET 2002)  
  4. 1.0 SP1    1.0.3705.209  
  5. 1.0 SP2    1.0.3705.288  
  6. 1.0 SP3    1.0.3705.6018  
  7.  
  8. 1.1 RTM    1.1.4322.573                Released with VS.NET 2003  
  9. 1.1 SP1    1.1.4322.2032  
  10. 1.1 SP1    1.1.4322.2300              (Windows Server 2003 32-bit version)  
  11.  
  12. 2.0 RTM    2.0.50727.42                Released with VS2005 RTM  
  13. 2.0 SP1    2.0.50727.1433              Released with VS2008 RTM and .Net 3.5 RTM  
  14. 2.0 SP2    2.0.50727.3053              Released with VS2008 SP1 and .Net 3.5 SP1  
  15.  
  16. Framework  CLR           New assemblies  
  17. ----------------------------------------------------------  
  18. 3.0 RTM    2.0 RTM       3.0.4506.30   Only "out-of-band" non-SP framework release  
  19. 3.0 SP1    2.0 SP1       3.0.4506.648  Released with VS2008 RTM and .Net 3.5 RTM  
  20. 3.0 SP2    2.0 SP2       3.0.4506.2152  Released with VS2008 SP1 and .Net 3.5 SP1  
  21.  
  22. 3.5 RTM    2.0 SP1       3.5.21022.8    Released with VS2008 RTM and .Net 3.5 RTM  
  23. 3.5 SP1    2.0 SP2       3.5.30729.1    Released with VS2008 SP1  
  24.  
  25. Framework  CLR and Assemblies            Release  
  26. ----------------------------------------------------------  
  27. 4.0 RTM    4.0.30319.1                   Released with VS2010 

注意,沒有 CLR 3.0 和 CLR 3.5。

有些 Windows 操作系統(tǒng)中已經(jīng)內(nèi)置了 .NET Framework,如下所示:

Version Version Number Release Date Visual Studio Default in Windows
1.01.0.3705.02002-02-13Visual Studio .NET 
1.11.1.4322.5732003-04-24Visual Studio .NET 2003Windows Server 2003
2.02.0.50727.422005-11-07Visual Studio 2005 
3.03.0.4506.302006-11-06 Windows Vista, Windows Server 2008
3.53.5.21022.82007-11-19Visual Studio 2008Windows 7, Windows Server 2008 R2
4.04.0.30319.12010-04-12Visual Studio 2010 

各個(gè) .NET Framework 版本之間的關(guān)系如下圖:

幾個(gè)重要的 .NET Framework 安裝程序的大小如下:

Version File Date & Time    Bytes      MB          File Name
------- ---------------- ----------- ----- ---------------------------
2.0 SP2 2008/07/30 09:54  25,001,480  23.8 NetFx20SP2_x86.exe
3.5 SP1 2008/07/30 16:22 242,743,296 231.5 dotnetfx35setup.exe
4.0 RTM 2010/03/19 09:44  50,449,456  48.1 dotNetFx40_Full_x86_x64.exe
WIC     2009/11/23 20:24   1,226,536   1.2 wic_x86_chs.exe

可以看出,.NET Framework 3.5 SP1 安裝程序特別大,而 .NET Framework 4.0 RTM 安裝程序反而變小了很多,不知 Microsoft 使用了什么技術(shù),在增加功能的基礎(chǔ)上還大大減少了安裝程序的大小。

我們來看看以下 ClrInfo.cs 吧:

 
 
 
 
  1. using System;  
  2. using System.Text;  
  3.  
  4. namespace Skyiv  
  5. {  
  6.   public class ClrInfo  
  7.   {  
  8.     static void Main()  
  9.     {  
  10.       Console.WriteLine("      OS Version: {0}", Environment.OSVersion);  
  11.       Console.WriteLine("     CLR Version: {0}  ( {1} )", Environment.Version, RuntimeFramework.CurrentFramework);  
  12.       Console.WriteLine("Default Encoding: {0}", Encoding.Default);  
  13.       Console.WriteLine();  
  14.       Console.WriteLine(typeof(string).AssemblyQualifiedName);  
  15. #if !NetFx20  
  16.       Console.WriteLine(typeof(System.IO.Packaging.Package).AssemblyQualifiedName);  
  17.       Console.WriteLine(typeof(System.TimeZoneInfo).AssemblyQualifiedName);  
  18. #endif  
  19.       Console.WriteLine();  
  20.       Console.WriteLine("Available Frameworks:");  
  21.       foreach (var frame in RuntimeFramework.AvailableFrameworks) Console.WriteLine("  " + frame);  
  22.     }  
  23.   }  

使用以下 makefile 文件來編譯(請參見: 淺談 make 工具):

 
 
 
 
  1. CLR35 = C:\Windows\Microsoft.NET\Framework\v3.5  
  2. CLR40 = C:\Windows\Microsoft.NET\Framework\v4.0.30319  
  3. CSC35 = $(CLR35)\csc.exe  
  4. CSC40 = $(CLR40)\csc.exe  
  5. SRC1 = ClrInfo.cs RuntimeFramework.cs  
  6.  
  7. ClrInfo20.exe: $(SRC1)  
  8.     $(CSC35) -out:$@ $(SRC1) -D:NetFx20  
  9.  
  10. ClrInfo35.exe: $(SRC1)  
  11.     $(CSC35) -out:$@ $(SRC1) -r:WindowsBase.dll  
  12.  
  13. ClrInfo40.exe: $(SRC1)  
  14.     $(CSC40) -out:$@ $(SRC1) -r:$(CLR40)\WPF\WindowsBase.dll 

使用 nmake.exe 進(jìn)行編譯(所需的 RuntimeFamework.cs 請參見 .NET Framework CLR 版本檢測):

 
 
 
 
  1. E:\CS\ClrInfo> nmake ClrInfo20.exe  
  2. Microsoft (R) 程序維護(hù)實(shí)用工具 9.00.30729.01 版  
  3. 版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。  
  4.  
  5. C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe -out:ClrInfo20.exe ClrInfo.cs RuntimeFramework.cs -D:NetFx20  
  6. 適用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 編譯器 3.5.30729.1 版  
  7. 版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。  
  8.  
  9. E:\CS\ClrInfo> nmake ClrInfo35.exe  
  10. Microsoft (R) 程序維護(hù)實(shí)用工具 9.00.30729.01 版  
  11. 版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。  
  12.  
  13. C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe -out:ClrInfo35.exe ClrInfo.cs RuntimeFramework.cs -r:WindowsBase.dll  
  14. 適用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 編譯器 3.5.30729.1 版  
  15. 版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。  
  16.  
  17. E:\CS\ClrInfo> nmake ClrInfo40.exe  
  18. Microsoft (R) 程序維護(hù)實(shí)用工具 9.00.30729.01 版  
  19. 版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。  
  20.  
  21. C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe -out:ClrInfo40.exe ClrInfo.cs RuntimeFramework.cs  
  22.  -r:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\WindowsBase.dll  
  23. Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1  
  24. Copyright (C) Microsoft Corporation. All rights reserved.  
  25.  
  26. E:\CS\ClrInfo> dir *.exe  
  27. 2010/04/17  19:59             7,168 ClrInfo20.exe  
  28. 2010/04/17  19:59             7,168 ClrInfo35.exe  
  29. 2010/04/17  19:59             7,680 ClrInfo40.exe 

使用 Sun VirtualBox 全新安裝 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 操作系統(tǒng):

運(yùn)行 ClrInfo35.exe,結(jié)果如下所示:

運(yùn)行 ClrInfo40.exe,結(jié)果如下所示:

好吧,讓我們安裝 Microsoft .NET Framework 2.0 SP2 吧。

然后運(yùn)行 ClrInfo20.exe,結(jié)果如下所示:

 
 
 
 
  1. D:\CS\ClrInfo> ClrInfo20  
  2.       OS Version: Microsoft Windows NT 5.2.3790 Service Pack 2  
  3.      CLR Version: 2.0.50727.3053  ( Net 2.0.50727.3053 )  
  4. Default Encoding: System.Text.DBCSCodePageEncoding  
  5.  
  6. System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
  7.  
  8. Available Frameworks:  
  9.   Net 1.1.4322  
  10.   Net 2.0.50727 

運(yùn)行 ClrInfo35.exe,結(jié)果如下所示:

 
 
 
 
  1. D:\CS\ClrInfo> ClrInfo35  
  2.  
  3. Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly  
  4.  'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or  
  5.  one of its dependencies. 系統(tǒng)找不到指定的文件。  
  6. File name: 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 
  7.    at Skyiv.ClrInfo.Main()  
  8.  
  9. WRN: Assembly binding logging is turned OFF.  
  10. To enable assembly bind failure logging, set the registry value  
  11.  [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.  
  12. Note: There is some performance penalty associated with assembly bind failure logging.  
  13. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 

運(yùn)行 ClrInfo40.exe,還是報(bào)“.NET Framework Initialization Error”錯(cuò)誤。

使用 Sun VirtualBox 的快照恢復(fù)功能將 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 操作系統(tǒng)恢復(fù)到全新安裝的狀態(tài)。

然后安裝 Microsoft .NET Framework 4.0 RTM。

其中的 Microsoft .NET Framework 4 Client Profile 也可以單獨(dú)安裝的,這樣安裝包(41.0MB)會小一些,但是有些擴(kuò)展功能就不能用了。

運(yùn)行 ClrInfo40.exe,結(jié)果如下所示:

 
 
 
 
  1. D:\CS\ClrInfo> ClrInfo40  
  2.       OS Version: Microsoft Windows NT 5.2.3790 Service Pack 2  
  3.      CLR Version: 4.0.30319.1  ( Net 4.0.30319.1 )  
  4. Default Encoding: System.Text.DBCSCodePageEncoding  
  5.  
  6. System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
  7. System.IO.Packaging.Package, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
  8. System.TimeZoneInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
  9.  
  10. Available Frameworks:  
  11.   Net 1.1.4322  
  12.   Net 4.0.30319 

運(yùn)行 ClrInfo35.exe,結(jié)果如下所示:

這就是說,舊版本的 .NET 程序不能運(yùn)行在新版本的 CLR 4.0 上面。

還有就是,安裝了 .NET Framework 4.0 后,只能報(bào)告“Unable to find a version of the runtime to run this application”,而不能象以前一樣明確指出是需要 CLR 2.0.50727。

實(shí)際上,在 CLR 4.0 上也是可以運(yùn)行 ClrInfo35.exe 程序的,只需要在同一目錄下放一個(gè)以下內(nèi)容的 ClrInfo35.exe.config 文件就行了:

   
 
 
 
  1.    
  2.    
  3.    
  4.    
  5.   

其運(yùn)行結(jié)果和 ClrInfo40.exe 的一樣。

現(xiàn)在我們接著安裝 Microsoft .NET Framework 3.5 SP1。

可見,安裝 .NET Framework 3.5 SP1 時(shí),會自動(dòng)安裝 .NET Framework 2.0 SP2 和 .NET Framework 3.0 SP2。

然后再運(yùn)行 ClrInfo35.exe (先刪除 ClrInfo35.exe.config),結(jié)果如下:

 
 
 
 
  1. D:\CS\ClrInfo> clrinfo35  
  2.       OS Version: Microsoft Windows NT 5.2.3790 Service Pack 2  
  3.      CLR Version: 2.0.50727.3053  ( Net 2.0.50727.3053 )  
  4. Default Encoding: System.Text.DBCSCodePageEncoding  
  5.  
  6. System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
  7. System.IO.Packaging.Package, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
  8. System.TimeZoneInfo, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
  9.  
  10. Available Frameworks:  
  11.   Net 1.1.4322  
  12.   Net 2.0.50727  
  13.   Net 4.0.30319 

注意 System.String、System.IO.Packaging.Package 和 System.TimeZoneInfo 的版本號。

總結(jié)一下:

◆.NET Framework 1.0 (CLR 1.0) 和 1.1 (CLR 1.1) 已經(jīng)過時(shí),強(qiáng)烈建議不要使用。

◆.NET Framework 2.0 (CLR 2.0) 是目前廣泛使用的版本,提供了大部分的基礎(chǔ)功能。

◆.NET Framework 3.0 (CLR 2.0) 增加了 WPF、WCF、WF 和 Card Space 等功能。

◆.NET Framework 3.5 (CLR 2.0) 增加了 LINQ、ADO.NET Entity Framework 等功能。

◆.NET Framework 4.0 (CRL 4.0) 重新實(shí)現(xiàn)并改進(jìn)了以前版本 .NET Framework 的功能,并且增加了 Parallel LINQ、Task Parallel Library 等新功能,強(qiáng)烈建議使用。舊版本的 .NET 程序可以通過配置 元素在 CLR 4.0 運(yùn)行。


網(wǎng)站題目:.NETFramework十年回顧體積越小功能越強(qiáng)
標(biāo)題URL:http://www.dlmjj.cn/article/cojjsej.html