5

我对 MS 堆栈的所有部分如何组合在一起感到非常困惑。C# 版本、Visual Studio 版本、.NET 框架版本和 ASP.NET 版本(这与 .net 版本相同吗?)如何适合给定项目?

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

4

6 回答 6

5

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

但是,其中一些功能(例如,dynamicNoPIA)依赖于特定 .Net Framework 版本中的功能。

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

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

于 2012-05-17T13:45:59.973 回答
2

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

因此,如果您以 2.0 框架为目标,如您的示例所示,则只能使用 2.0 框架中可用的 BCL 库。因此,您不能使用System.Linq.

但是,由于 VS2010 使用 C# 4 编译器,您可以使用 C# 4 编译器功能,例如默认参数,并且仍然针对较旧的框架。

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

class Program
{
    public static void HelloWorld(string x = "Hi")
    {
        Console.WriteLine(x);
    }
    static void Main(string[] args)
    {
        HelloWorld();
        HelloWorld("Buyah");
    }
}
于 2012-05-17T13:46:33.017 回答
1

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

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

于 2012-05-17T13:50:53.577 回答
1

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

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

对比 2005 | .NET 2.0 及更早版本 | C# 2.0 及更早版本

对比 2008 | .NET 3.5 及更早版本 | C# 3.0 及更早版本

对比 2010 | .NET 4.0 及更早版本 | C# 4.0 及更早版本

VS 11(测试版)| .NET 4.5 及更早版本 | C# 5.0 及更早版本

于 2012-05-17T13:51:51.720 回答
0

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

.Net 根据库的特性有自己的版本

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

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

它们都是相互关联的,但并不相互依赖。通常,它们都会在 .net 上更新一个版本,但有时它们会在更新语言或框架之前向 ASP.Net 发布新功能。

于 2012-05-17T13:50:06.680 回答
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 Frameworks

于 2012-05-17T13:53:50.400 回答