.NET 3.5的版本问题

从2002年的.NET Framework1.0,经过五年的发展,.NET已经越来越成熟,现在已经是.NET Framework 3.5了。相信很多朋友已经开始通过各种渠道了解了Visual Studio 2008以及.NET Framework 3.5,并且已经进入到实践了。

开心在VS 2008 beta 2的时候,就将手头的一些动手项目(为了保持功力持久不衰,开心也会经常写写代码的)切换到了.NET Framework 3.5。可是在切换过程当中,还是遇到了很多问题,在这儿想与大家商榷一下。

可能所有研究.NET的朋友在内心里面都会模糊得有这样一个蓝图:

.NET Framework 1.0 1.1 2.0 3.0 3.5
C# C# 1.0 C# 1.1 C# 2.0 C# 3.0 C# 3.5
ASP.NET ASP.NET 1.0 ASP.NET 1.1 ASP.NET 2.0 ASP.NET 3.0 ASP.NET 3.5

俺个人对于这个蓝图,一直以来也是坚信不疑的,当然,3.0是一个例外,毕竟3.0是一个对于2.0的补充,要想使用3.0,你必须先安装2.0,3.0仅仅是扩充了四个模块,即WPF(Windows Presentation Foundation)、WCF(Windows Communcation Foundataion)、WF(Windows Workflow Foundation)以及WCS(Windows Card Space),所以那时候我在拜访客户的时候,讲解.NET 3.0都会提到.NET 3.0其实可以看作是.NET 2.0 SP1。只不过基于种种原因,所以目前改名叫做.NET 3.0。而.NET 3.5才会是真正的.NET 3.0,才会提供C# 3.0以及ASP.NET 3.0这些概念。

我一直很坚信自己的这些看法的,也坚信随着.NET 3.5的出现,会出现ASP.NET 3.5或者C# 3.5这样的称呼。而且我在http://www.asp.net已经看到类似的术语了:

image

既然是ASP.NET 3.5,那么想当然的,在IIS的设置里面肯定可以选择不同的.NET版本用以绑定,所以我兴冲冲的来到IIS 7的.NET绑定环节中(在应用程序池当中选择),准备将我新开发的Web项目绑定到ASP.NET 3.5当中。可是,意想不到的情况出现了,竟然没有.NET Framework 3.5的选项:

image

咦,这到底是怎么回事呢?突然想到,是不是我没有使用ASPNET_RegIIS.exe进行注册呀,于是进入到[SystemDriver]:\Windows\Microsoft.NET\Framework\v3.5当中寻找aspnet_regiis.exe这个文件,可是发现没有这个文件。这下我是彻底晕菜了。到底是怎么回事呢?

于是发邮件询问一些总部的同事,结果得到的答案是:ASP.NET 3.5不是Offical的术语,真正的术语应该是ASP.NET Running on Framework 3.5。

原来如此,ASP.NET 3.5只是我们想当然的一个术语,其实ASP.NET 3.5根本不存在,所以您要做的只是编写ASP.NET 2.0的应用程序,然后在VS 2008中将其Target Framework指向为.NET Framework 3.5。ASP.NET Running on Framework 3.5在ASP.NET层次也没有带来新的革命性的改变,只是集成了AJAX,并且增加了一两个控件。

所以我认为:

.NET 3.0=.NET 2.0 Service Pack 1 with WCF, WPF, WF and WCS

.NET 3.5=.NET 2.0 Service Pack 2 with LINQ, C# 3.0, WCF 2.0, WPF 2.0, WF 2.0 and ASP.NET Ajax