W3bbo wrote:
That's right, the CLR is (generally) backwards compatible. Assemblies built for CLR 1.0 that don't target any deprecated features will still run perfectly fine (if not better) on CLR 3.0
But an assembly that targets 3.5 will not work on a system that only has 1.0 installed. However, it will work on a system that only has 2.0, if no 3.x features are used.
The point is that Microsoft has skewed the framework versioning based on the
tools, and additional assemblies, not the actual core classes that make up the framework. As I pointed out, even the new stuff in the C:\Windows\Microsoft.NET\Framework\v3.5.20404 folder is
versioned as 2.0.
So where does this end? 3.5 consists of new compilers, tools and additional assemblies, but it's in addition to -- not a replacement of -- the core assemblies in the 2.0 framework. So, down the road when .NET Framework 6.0 is released, is that going to mean that end users are going to need everything from 2.0, 3.0, 3.5, 4.x, 5.x and 6.0 installed on their systems? Good grief.
IMHO, they should have made it so that major version changes to the CLR where whole and complete. If something targets 3.x, then the only thing that an end user should need installed on their system is the 3.x framework. Period, end of story. The way things are, this just makes redistribution even more of a mess.