.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

打赏作者

“.NET 3.5的版本问题”的27个回复

  1. 其实这个表还是不够准确,应该把CLR的版本列出来才对:
    .NET打包版本  1.0  1.1  2.0  3.0  3.5
    C#编译器版本  1.0  1.1  2.0  2.0  3.0
    VB编译器版本  7.0  7.1  8.0  8.0  9.0
    CLR版本    1.0  1.1  2.0  2.0  2.0

  2. 我个人觉得.NET 3.0确实不应该称为3.0,顶多叫.Net 2.0 extension package。.Net 3.5才可以叫.Net 3.0,因为它的类库对比2.0已经改变了很多,将WCF,WPF,WF都整合进来了。

  3. csc.exe 的版本号还是 beta 2?

    Microsoft (R) Visual C# 2008 Compiler Beta 2 version 3.5.21022.8

    for Microsoft (R) .NET Framework version 3.5
    版权所有 (C) Microsoft Corporation。保留所有权利。

  4. 以后如果面试开发人员,可以用以下BT的面试题,呵呵

    1) Using Visual Studio 2008,we can develop which web applications?
       A) ASP.NET 1.1; B) ASP.NET 3.0; C) ASP.NET 3.5; D)ASP.NET 2.0 Running on Framework 3.5;
    2) In .NET Framework 3.5, which version C# is?  
       A) 1.0; B) 2.0; C) 3.0; D) 3.5

  5. @开心就好

    我这里得到的消息,1022.8确实是sign off的RTM版本,包括现在在MSDN和那个90天试用版,都是.8的。

    有关Framework 3.5的,严格来说,其中的ASP.NET依然是2.0,所以在IIS7中也只有2.0的选项。包括LINQ等其实都是编译器层次上的新的feature,用3.5的csc编译的包含linq的ASP.NET c#项目,依然可以在只有2.0framework上运行。

    所有C#3.0的new features 都是编译器层次上的,编译之后其实MSIL和2.0的完全兼容。

    其实这样也有好处,利于过渡。

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

    请问能不能单独安装WCF

    全部安装文件太大了,客户端下载时间太长,安装也很费时!

  7. 怎么可能还有Beta2字样哪?21022.8是RTM,.7不是。

    Microsoft (R) Visual C# 2008 Compiler version 3.5.21022.8
    for Microsoft (R) .NET Framework version 3.5
    Copyright (C) Microsoft Corporation. All rights reserved.

    fatal error CS2008: No inputs specified

  8. 说得好!

    .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

发表评论