The easy part:
Targeting the .NET 2.0 framework in a Visual Studio 2010 project using the dropdown.
The hard part:
Is it possible to target a specific syntax version - for example var s = "hello world"
is valid syntactic sugar in VS2008 and above, but would not compile in VS2005. Can VS2010 be configured to flag this at compile time?
This can be done by specifying the language version in the project settings. To set the language version to C# 2.0 do the following
- Right Click on the project and select "Properties"
- Go to the "Build" Tab
- Click the "Advanced" Button
- Change the "Language Version" drop down to "ISO-2"
Here are the other selections and their meanings in Visual Studio 2010.
- ISO-1: C# 1.0 / Visual Studio RTM and 2003
- ISO-2: C# 2.0 / Visual Studio 2005
- C# 3.0: C# 3.0 / Visual Studio 2008
- default: C# 4.0 / Visual Studio 2010
Yes. From the IDE, set:
Project Properties -> Build -> Advanced -> Language Version : ISO-2
Yes, you can do this, as others have said - but it's not a perfect simulation of the C# 1 compiler, as I discovered while I was giving a presentation. It will spot "big" changes in syntax, but not some subtle changes in behaviour. For example, in C# 1 there's no method group conversion, so you couldn't do this:
delegate void Foo(string x);
void Bar(string y) {}
...
Foo foo = Bar;
... but simply setting the C# 4 compiler to target C# 1 doesn't pick this up.