There are lots of different versions of different elements of development. You need to distinguish between the versions of Visual Studio (the IDE), C# (the language) and .NET (the framework). It’s quite hard to talk about each of these individually without bringing in other pieces, but I’ll see what I can do… Note that I’ll avoid introducing the CLR versions as well, as most developers don’t really need to know about that.
These are the versions of C# known about at the time of this writing:
.NET Framework versions
There have been seven significant releases of the .NET Framework, excluding service packs. The framework includes the compilers, runtime, and libraries. Additionally, there are other profiles such Silverlight which complicate matters.
1.0 – released in 2002
1.1 – released in 2003
2.0 – released in 2005, with a new CLR (to handle generics and nullable types) and compilers for C# 2 and VB 8.
3.0 – released in 2006, this is just 2.0 plus new libraries: Windows Presentation Foundation, Windows Communication Foundation, Workflow Foundation, and Cardspace
3.5 – released in 2007, this is 3.0 plus new libraries (primarily LINQ and some extra “base” libraries such as TimeZoneInfo) and new compilers (for C# 3 and VB 9)
4.0 – released in 2010, this includes a new CLR (v4), new libraries, and the DLR (Dynamic Language Runtime)
4.5 – released in 2012, this allows for WinRT development on Windows 8 as well as extra libraries – with much wider async APIs
C# language versions
There are five significant language versions:
C# 2, introducing generics, nullable types, anonymous methods, iterator blocks and some other more minor features
C# 3, introducing implicit typing, object and collection initializers, anonymous types, automatic properties, lambda expressions, extension methods, query expressions and some other minor features
C# 4, introducing dynamic typing, optional parameters, named arguments, and generic variance
C# 5, introducing asynchronous functions, caller info attributes, and a tweak to foreach iteration variable capture
See the specifications page for downloads for each version, from Microsoft and ECMA.
Visual Studio versions
For a long time, releases of Visual Studio were closely tied to framework releases. The picture has become a bit more flexible and complicated, however:
VS.NET 2002 – support for C# 1 and .NET 1.0
VS.NET 2003 – support for C# 1 and .NET 1.1
VS 2005 – support for C# 2 and .NET 2.0, and .NET 3.0 with an extension
VS 2008 – support for C# 3 and .NET 2.0, 3.0 and 3.5 (multi-targeting)
VS 2010 – support for C# 4 and .NET 2.0, 3.0, 3.5 and 4
VS 2012 – support for C# 5 and .NET 2.0 to 4.5 (including WinRT on Windows 8), and portable class libraries
More detailed information about the relationship between the language, runtime and framework versions is available on the C# in Depth site.