Roy Osherove

View Original

Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions

The announcement of .NET Framework 3.0 previously dubbed WinFX is definitely confusing. Microsoft is trying to plug some of the holes but isn't doing so well, which is why you'll start seeing all these random blog posts popping out trying to explain the chaos. This is one of them.
 
Here's the latest word from Joe Binder of the VB Team, and you can also read Brad Abrams' Post on the topic which clear up a lot.
 
 
Here’s a tabular view of what’scoming down the pipe, and when.  Highlighted items ship together.

 

Product/Deliverable

Timeframe

Language Ver.

CLR Ver.

.NET FX 2.0

Nov 2005

VB 8.0/C# 2.0

2.0

VS 2005

Nov 2005

VB 8.0/C# 2.0

2.0

FX 3.0 (Formerly “WinFX”; Includes Avalon, Indigo, Workflow)

Windows Vista RTM (2006)

VB 8.0/C# 2.0

2.0

Visual Studio “Orcas”

2007

VB 9.0/C# 3.0

2.0

FX 3.5 (LINQ)

2007

VB 9.0/C# 3.0

2.0

 

Here’s some information on what each version includes:

·         FX 2.0: Includes CLR 2.0—generics, etc.  Shipped with VS 2005; not much to say here.

·         FX 3.0 = FX 2.0 + WPF (Avalon), WCF (Indigo), WF (Workflow).  In other words, FX 3.0 is a set of assemblies that has been added to FX 2.0; it  only includes service pack-level fixes to existing (FX 2.0) assemblies or the existing languages (VB 8.0).  FX 3.0 is installed by default on Windows Vista (and is therefore bound to the Vista RTM date), and available for download on down-level platforms.  There currently is not a supported version of Visual Studio that targets FX 3.0, however; you can download extensions to VS 2005 that provides some rudimentary support for FX 3.0 at http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx.

·         FX 3.5 = FX 3.0 + LINQ.  Basically, you can think of FX 3.5 as the new compilers, tools, and assemblies required to support LINQ.  Again, FX 3.5 includes new assemblies (e.g., System.Query.dll) and service-pack-level fixes to existing assemblies.    FX 3.5 will ship with VS “Orcas”.

An important thing to note about the above versions of the FX is that they all run on CLR 2.0, which shipped in 2005.

 

Unlike previous versions of VS, VS “Orcas” will include the ability to build applications that target each of the above framework versions—FX 2.0, FX 3.0, and FX 3.5.  You’ll have the ability to specify what framework version the project should target when a project is created, opened for the first time in VS Orcas, and via the property pages.  Once a framework version is selected, references, IntelliSense, Object Browser, the Toolbox, etc will be modified such that references that aren’t available in the chosen target are filtered (grayed out, generally). 

 

Some common questions…

·         Will I be able to open my 2005 project in VS “Orcas” without upgrading it to FX 3.5?

Yes.  Users will have the option to upgrade the project’s framework target the first time they open it in VS Orcas; however, upgrading will not be required

·         Will I be able to open my 2005 project in VS “Orcas” then re-open it in VS 2005?

No.  Once a project has been opened in VS “Orcas”, it cannot be subsequently opened in 2005.

·         Will I be able to use LINQ in my FX 2.0 project?

No. LINQ requires assemblies that are only available in FX 3.5 projects.

·         If I already have FX 2.0 installed and my app requires FX 3.0, what do I need to install when I deploy my app?

Because FX 3.0 is just an add-on pack of sorts for FX 3.0, you’ll only need to install the 3.0 Runtime Components, which have FX 2.0 as a pre-requisite.

 

Admittedly, this whole framework versioning scheme is pretty confusing…  so we’re trying to make the related user experience in VS opt-in: by default you’ll target the latest and greatest version of the FX 3.5 when you create a project and most of this will be transparent.  If you do need to target an earlier version, the option will be available.  We’ll certainly be interested in your feedback on the model when the first VS Orcas CTP is released.