C#版本,VS版本和.NET框架版本等如何组合在一起?

时间:2012-05-17 13:42:02

标签: c# asp.net .net

我很困惑MS堆栈的所有部件如何组合在一起。 C#版本,Visual Studio版本,.NET框架版本和ASP.NET版本(与.net版本相同吗?)如何适合给定项目?

例如,如果我将Visual Studio 2010用于面向.NET framework 2的项目,我如何知道可以使用哪些C#或ASP.NET功能?

6 个答案:

答案 0 :(得分:5)

C#版本控制您可以使用的语言功能;它独立于其他一切。 (因为它只是编译器)
即使定位较旧的框架,您也可以使用(大多数)较新的语言功能。

但是,其中一些功能(例如dynamic或NoPIA)取决于特定.Net Framework版本中的功能。

.Net Framework版本控制.Net的哪些部分可以使用;一些.Net功能(例如,LINQ或TPL)在较新版本中引入(分别为3.5和4.0)

为了使事情变得更复杂,ASP.Net在运行时调用C#编译器来编译ASPX或Razor视图(以及Web站点项目中的独立文件),因此在这种情况下您不能使用比框架版本更新的语言功能

答案 1 :(得分:2)

C#版本是为编译源代码而调用的编译器版本,VS版本是visual studio IDE的版本,可支持多个框架版本。该框架的版本会影响可用的.NET BCL(基类库)的版本。

因此,如果您的目标是2.0 Framework,就像在您的示例中一样,您只能使用2.0框架中提供的BCL库。因此,您无法使用System.Linq

但是,由于VS2010使用C#4编译器,可以使用C#4编译器功能,例如默认参数,仍然是目标一个较旧的框架。

因此,当从VS2010构建时,这将在2.0 Framework下编译和运行,因为C#4编译器在编译时处理默认参数:

class Program
{
    public static void HelloWorld(string x = "Hi")
    {
        Console.WriteLine(x);
    }
    static void Main(string[] args)
    {
        HelloWorld();
        HelloWorld("Buyah");
    }
}

答案 2 :(得分:1)

Visual Studio版本控制您可以使用哪些C#/ .NET版本;您无法使用Visual Studio 2005中的.NET 4.0功能编写C#,因为IDE是在C#版本之前发布的。但是你可以倒退,即从VS 2010定位.NET 2.0。

关于框架版本和IDE的C#版本如下,从.NET / C#2.0和VS 2005开始:

VS 2005 | .NET 2.0和之前的版本C#2.0及之前的

VS 2008 | .NET 3.5和之前的版本C#3.0及之前的

VS 2010 | .NET 4.0和之前的版本C#4.0及之前的

VS 11(beta)| .NET 4.5和之前的版本C#5.0及之前的

答案 3 :(得分:0)

Visual Studio是IDE。它支持多种版本的.Net,具体取决于您拥有的VS版本。 VS2010支持.Net 2和高达.Net 4(不包括当前的测试版)

.Net有自己的版本,基于库的功能

彼此独立且.Net,C#和VB都有自己的版本号。 VB取代了经典的VB,最后我检查了11. C#与.Net编号接近。当语言本身获得独立于图书馆的新功能时,这些会发生变化。

ASP.Net也有自己的版本,同样基于不同的功能。

它们都是相互关联的,但并不依赖于彼此。一般来说,它们都是.net的版本,但有时他们会在更新语言或框架之前向ASP.Net发布新功能。

答案 4 :(得分:0)

查看Wikipedia entry for C#,中的表格,它可以很好地概述不同版本的C#语言(和编译器),以及它们所依赖的.NET和Visual Studio的版本。

请记住,Visual Studio通常是向后兼容的,因此即使在Visual Studio 2010中也可以针对.NET Framework 2.0编写C#2.0代码。

答案 5 :(得分:0)

这里的表格更适合,但这是我的回答:

  

语言:C#1,.NET Frameworks 1.0,1.1,VS 2003

     

语言:C#2,.NET Frameworks 2.0,VS 2005(主要功能添加:   泛型)

     

语言:C#3,.NET Framework 3.0,3.5(实际上它们基于   版本2.0),VS 2008(主要功能添加:LINQ(语言),WCF,WPF,   WF(技术)

     

语言:C#4,.NET Framework 4.0,VS 2010(主要功能添加:   动态类型)

顺便说一句:VS 2008,2010可以从2.0版本开始以.NET框架为目标