【IT168技术】在Visual Studio 2010正式发布后,.NET平台也差不多走过了十多年的时间。这十几年.NET Framework的发展是怎样的一个过程,本文将为您揭示.NET Framework十年发展路。51CTO向您推荐《Visual Studio进化史》专题配合您了解这篇文章。
自2000年6月22日微软向全球宣布自己的.NET战略,到现在已经十年多了。作为.NET战略的基础,Microsoft .NET Framework 也已经发行了多个版本。下面,我们就来看看这些年来微软到底发布了哪些 .NET Framework 版本。
Framework CLR and Assemblies Release ---------------------------------------------------------- 1.0 RTM 1.0.3705.0 Released with VS.NET (aka VS.NET 2002) 1.0 SP1 1.0.3705.209 1.0 SP2 1.0.3705.288 1.0 SP3 1.0.3705.6018 1.1 RTM 1.1.4322.573 Released with VS.NET 2003 1.1 SP1 1.1.4322.2032 1.1 SP1 1.1.4322.2300 (Windows Server 2003 32-bit version) 2.0 RTM 2.0.50727.42 Released with VS2005 RTM 2.0 SP1 2.0.50727.1433 Released with VS2008 RTM and .Net 3.5 RTM 2.0 SP2 2.0.50727.3053 Released with VS2008 SP1 and .Net 3.5 SP1 Framework CLR New assemblies ---------------------------------------------------------- 3.0 RTM 2.0 RTM 3.0.4506.30 Only "out-of-band" non-SP framework release 3.0 SP1 2.0 SP1 3.0.4506.648 Released with VS2008 RTM and .Net 3.5 RTM 3.0 SP2 2.0 SP2 3.0.4506.2152 Released with VS2008 SP1 and .Net 3.5 SP1 3.5 RTM 2.0 SP1 3.5.21022.8 Released with VS2008 RTM and .Net 3.5 RTM 3.5 SP1 2.0 SP2 3.5.30729.1 Released with VS2008 SP1 Framework CLR and Assemblies Release ---------------------------------------------------------- 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 版本之间的关系如下图:
几个重要的 .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 吧:
using System; using System.Text; namespace Skyiv { public class ClrInfo { static void Main() { Console.WriteLine(" OS Version: {0}", Environment.OSVersion); Console.WriteLine(" CLR Version: {0} ( {1} )", Environment.Version, RuntimeFramework.CurrentFramework); Console.WriteLine("Default Encoding: {0}", Encoding.Default); Console.WriteLine(); Console.WriteLine(typeof(string).AssemblyQualifiedName); #if !NetFx20 Console.WriteLine(typeof(System.IO.Packaging.Package).AssemblyQualifiedName); Console.WriteLine(typeof(System.TimeZoneInfo).AssemblyQualifiedName); #endif Console.WriteLine(); Console.WriteLine("Available Frameworks:"); foreach (var frame in RuntimeFramework.AvailableFrameworks) Console.WriteLine(" " + frame); } } }
使用以下 makefile 文件来编译(请参见: 浅谈 make 工具):
CLR35 = C:\Windows\Microsoft.NET\Framework\v3.5 CLR40 = C:\Windows\Microsoft.NET\Framework\v4.0.30319 CSC35 = $(CLR35)\csc.exe CSC40 = $(CLR40)\csc.exe SRC1 = ClrInfo.cs RuntimeFramework.cs ClrInfo20.exe: $(SRC1) $(CSC35) -out:$@ $(SRC1) -D:NetFx20 ClrInfo35.exe: $(SRC1) $(CSC35) -out:$@ $(SRC1) -r:WindowsBase.dll ClrInfo40.exe: $(SRC1) $(CSC40) -out:$@ $(SRC1) -r:$(CLR40)\WPF\WindowsBase.dll
使用 nmake.exe 进行编译(所需的 RuntimeFamework.cs 请参见 .NET Framework CLR 版本检测):
E:\CS\ClrInfo> nmake ClrInfo20.exe Microsoft (R) 程序维护实用工具 9.00.30729.01 版 版权所有(C) Microsoft Corporation。保留所有权利。 C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe -out:ClrInfo20.exe ClrInfo.cs RuntimeFramework.cs -D:NetFx20 适用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 编译器 3.5.30729.1 版 版权所有(C) Microsoft Corporation。保留所有权利。 E:\CS\ClrInfo> nmake ClrInfo35.exe Microsoft (R) 程序维护实用工具 9.00.30729.01 版 版权所有(C) Microsoft Corporation。保留所有权利。 C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe -out:ClrInfo35.exe ClrInfo.cs RuntimeFramework.cs -r:WindowsBase.dll 适用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 编译器 3.5.30729.1 版 版权所有(C) Microsoft Corporation。保留所有权利。 E:\CS\ClrInfo> nmake ClrInfo40.exe Microsoft (R) 程序维护实用工具 9.00.30729.01 版 版权所有(C) Microsoft Corporation。保留所有权利。 C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe -out:ClrInfo40.exe ClrInfo.cs RuntimeFramework.cs -r:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\WindowsBase.dll Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1 Copyright (C) Microsoft Corporation. All rights reserved. E:\CS\ClrInfo> dir *.exe 2010/04/17 19:59 7,168 ClrInfo20.exe 2010/04/17 19:59 7,168 ClrInfo35.exe 2010/04/17 19:59 7,680 ClrInfo40.exe 使用 Sun VirtualBox 全新安装 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2
操作系统:
运行 ClrInfo35.exe,结果如下所示:
运行 ClrInfo40.exe,结果如下所示:
好吧,让我们安装 Microsoft .NET Framework 2.0 SP2 吧。
然后运行 ClrInfo20.exe,结果如下所示:
D:\CS\ClrInfo> ClrInfo20 OS Version: Microsoft Windows NT 5.2.3790 Service Pack 2 CLR Version: 2.0.50727.3053 ( Net 2.0.50727.3053 ) Default Encoding: System.Text.DBCSCodePageEncoding System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Available Frameworks: Net 1.1.4322 Net 2.0.50727 运行 ClrInfo35.exe
还是报“.NET Framework Initialization Error”错误。
使用 Sun VirtualBox 的快照恢复功能将 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 操作系统恢复到全新安装的状态。
D:\CS\ClrInfo> ClrInfo35 Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. 系统找不到指定的文件。 File name: 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' at Skyiv.ClrInfo.Main() WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 运行 ClrInfo40.exe
然后安装 Microsoft .NET Framework 4.0 RTM。
CLR 4.0 运行。