除了早期的.NET框架版本之外,Visual Studio可以针对早期的C#语法吗?

简单的部分:

使用下拉列表在Visual Studio 2010项目中定位.NET 2.0框架。

困难的部分:

是否有可能针对特定的语法版本 – 例如var s = "hello world"在VS2008及更高版本中是有效的语法糖,但不能在VS2005中编译。 VS2010可以配置为在编译时标记这个吗?

这可以通过在项目设置中指定语言版本来完成。 要将语言版本设置为C#2.0,请执行以下操作

  • 右键单击项目并选择“属性”
  • 转到“构建”选项卡
  • 单击“高级”按钮
  • 将“语言版本”下拉菜单更改为“ISO-2”

在此处输入图像描述

以下是Visual Studio 2010中的其他选项及其含义。

  • ISO-1:C#1.0 / Visual Studio RTM和2003
  • ISO-2:C#2.0 / Visual Studio 2005
  • C#3.0:C#3.0 / Visual Studio 2008
  • 默认值:C#4.0 / Visual Studio 2010

是。 从IDE中,设置:

 Project Properties -> Build -> Advanced -> Language Version : ISO-2 

是的,你可以这样做,正如其他人所说的那样 – 但它不是C#1编译器的完美模拟,正如我在发表演讲时发现的那样。 它会发现语法中的“大”变化,但不会发现行为中的一些细微变化。 例如,在C#1中没有方法组转换,因此您无法执行此操作:

 delegate void Foo(string x); void Bar(string y) {} ... Foo foo = Bar; 

…但是简单地将C#4编译器设置为目标C#1不会选择它。