成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET Framework十年回顧 體積越小功能越強

開發 后端
本文將為大家回顧十年來.NET Framework的發展歷程,以及CLR的發展。從中我們可以看出,工具體積是越來越小,但功能是越來越強大。

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

自2000年6月22日微軟向全球宣布自己的.NET戰略,到現在已經十年多了。作為.NET戰略的基礎,Microsoft .NET Framework 也已經發行了多個版本。下面,我們就來看看這些年來微軟到底發布了哪些 .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 操作系統中已經內置了 .NET Framework,如下所示:

Version Version Number Release Date Visual Studio Default in Windows
1.0 1.0.3705.0 2002-02-13 Visual Studio .NET  
1.1 1.1.4322.573 2003-04-24 Visual Studio .NET 2003 Windows Server 2003
2.0 2.0.50727.42 2005-11-07 Visual Studio 2005  
3.0 3.0.4506.30 2006-11-06   Windows Vista, Windows Server 2008
3.5 3.5.21022.8 2007-11-19 Visual Studio 2008 Windows 7, Windows Server 2008 R2
4.0 4.0.30319.1 2010-04-12 Visual Studio 2010  

各個 .NET Framework 版本之間的關系如下圖:

The .NET Framework Stack

幾個重要的 .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 使用了什么技術,在增加功能的基礎上還大大減少了安裝程序的大小。

我們來看看以下 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 進行編譯(所需的 RuntimeFamework.cs 請參見 .NET Framework CLR 版本檢測):

 

  1. E:\CS\ClrInfo> nmake ClrInfo20.exe  
  2. Microsoft (R) 程序維護實用工具 9.00.30729.01 版  
  3. 版權所有(C) Microsoft Corporation。保留所有權利。  
  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. 版權所有(C) Microsoft Corporation。保留所有權利。  
  8.  
  9. E:\CS\ClrInfo> nmake ClrInfo35.exe  
  10. Microsoft (R) 程序維護實用工具 9.00.30729.01 版  
  11. 版權所有(C) Microsoft Corporation。保留所有權利。  
  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. 版權所有(C) Microsoft Corporation。保留所有權利。  
  16.  
  17. E:\CS\ClrInfo> nmake ClrInfo40.exe  
  18. Microsoft (R) 程序維護實用工具 9.00.30729.01 版  
  19. 版權所有(C) Microsoft Corporation。保留所有權利。  
  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 操作系統:

Windows Server 2003 R2 

.NET CLR 1.1.4322

運行 ClrInfo35.exe,結果如下所示:

ClrInfo35 on CLR 1.1

運行 ClrInfo40.exe,結果如下所示:

ClrInfo40 on CLR 1.1

 

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

.NET CLR 2.0.50727

然后運行 ClrInfo20.exe,結果如下所示:

  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=neutralPublicKeyToken=b77a5c561934e089 
  7.  
  8. Available Frameworks:  
  9.   Net 1.1.4322  
  10.   Net 2.0.50727 

運行 ClrInfo35.exe,結果如下所示:

  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. 系統找不到指定的文件。  
  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]. 

運行 ClrInfo40.exe,還是報“.NET Framework Initialization Error”錯誤。

使用 Sun VirtualBox 的快照恢復功能將 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 操作系統恢復到全新安裝的狀態。

VirtualBox Restore

然后安裝 Microsoft .NET Framework 4.0 RTM。

.NET CLR 4.0

.NET CLR 4.0

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

運行 ClrInfo40.exe,結果如下所示:

  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=neutralPublicKeyToken=b77a5c561934e089 
  7. System.IO.Packaging.Package, WindowsBase, Version=4.0.0.0, Culture=neutralPublicKeyToken=31bf3856ad364e35 
  8. System.TimeZoneInfo, mscorlib, Version=4.0.0.0, Culture=neutralPublicKeyToken=b77a5c561934e089 
  9.  
  10. Available Frameworks:  
  11.   Net 1.1.4322  
  12.   Net 4.0.30319 

運行 ClrInfo35.exe,結果如下所示:

ClrInfo35

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

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

實際上,在 CLR 4.0 上也是可以運行 ClrInfo35.exe 程序的,只需要在同一目錄下放一個以下內容的 ClrInfo35.exe.config 文件就行了:

  1. <configuration>   
  2. <startup>   
  3. <supportedRuntime version="v4.0"/>   
  4. </startup>   
  5. </configuration>  

其運行結果和 ClrInfo40.exe 的一樣。

現在我們接著安裝 Microsoft .NET Framework 3.5 SP1。

.NET CLR 3.5 SP1 

.NET CLR 3.5 SP1

可見,安裝 .NET Framework 3.5 SP1 時,會自動安裝 .NET Framework 2.0 SP2 和 .NET Framework 3.0 SP2。

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

  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=neutralPublicKeyToken=b77a5c561934e089 
  7. System.IO.Packaging.Package, WindowsBase, Version=3.0.0.0, Culture=neutralPublicKeyToken=31bf3856ad364e35 
  8. System.TimeZoneInfo, System.Core, Version=3.5.0.0, Culture=neutralPublicKeyToken=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 的版本號。

總結一下:

◆.NET Framework 1.0 (CLR 1.0) 和 1.1 (CLR 1.1) 已經過時,強烈建議不要使用。

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

◆.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) 重新實現并改進了以前版本 .NET Framework 的功能,并且增加了 Parallel LINQ、Task Parallel Library 等新功能,強烈建議使用。舊版本的 .NET 程序可以通過配置 <supportedRuntime> 元素在 CLR 4.0 運行。

原文標題:Microsoft .NET Framework 以及 CLR 的版本

鏈接:http://www.cnblogs.com/skyivben/archive/2010/04/17/1714460.html

【編輯推薦】

  1. 淺談.NET Framework中的Stream.Read方法
  2. 淺析.NET Framework中XML數據處理
  3. .net framework3.5新特性2:新增匿名類
  4. 微軟公布下一代Visual Studio和.NET Framework平臺
  5. 配置Visual Studio 2008來調試.NET Framework源碼的基本步驟

 

責任編輯:彭凡 來源: 博客園
相關推薦

2013-06-08 13:52:29

蘋果WWDC2013

2012-11-07 11:36:16

2009-11-02 13:45:18

接入網技術

2010-01-04 09:33:19

網絡技術

2012-02-07 09:58:27

2019-12-06 07:57:58

網絡安全數據泄露黑客

2021-01-12 09:57:02

人工智能機器學習技術

2009-04-08 11:28:19

IDF歷史IDF簡介

2021-01-19 22:21:32

物聯網疫情IT

2009-07-11 13:49:54

2012-10-23 16:10:52

微軟Office 36PowerShell云服務

2010-12-20 13:03:41

NVIDIALinux顯卡驅動

2012-05-27 16:30:42

騰訊

2012-05-17 09:52:19

Linux紅帽

2014-11-26 17:24:01

AWSIaaSPaaS

2011-01-26 10:37:52

2021-01-20 23:53:16

PythonPython 3.9開發

2022-08-30 20:55:08

云計算IT公有云

2009-06-10 16:30:56

GlassFish

2011-11-15 14:54:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美高清hd | 国产乱码精品一区二区三区忘忧草 | 红色av社区 | 综合色导航 | 国产精品乱码一区二三区小蝌蚪 | 91精品国产综合久久久久久首页 | 免费的黄色片子 | 亚洲一区二区久久 | a级毛片基地 | 在线免费观看黄色 | 国内成人免费视频 | 国产精品永久免费视频 | 性欧美hd | 中国一级特黄毛片大片 | 东方伊人免费在线观看 | 伊人久操| 狠狠干天天干 | 性色av一区二区三区 | 91亚洲国产成人精品一区二三 | 午夜在线免费观看 | 久国产精品 | 99久久久国产精品 | 亚洲国产精品久久久 | 日韩精品一区在线观看 | 黄色片大全在线观看 | 国产精品成人一区二区三区夜夜夜 | 在线中文字幕日韩 | 美女黄频 | 中文字幕在线观看视频一区 | 欧美性影院 | 天堂在线www | 高清国产一区二区 | 中文字幕在线二区 | 亚洲成人网在线播放 | 久久久久久久av | 亚洲欧美自拍偷拍视频 | 日日摸夜夜添夜夜添特色大片 | 91精品国产欧美一区二区 | 欧洲尺码日本国产精品 | 91一区二区三区在线观看 | 久久精品一级 |