Alain Dekker said:
Something I don't quite understand here. What exactly does "the
framework's are meant to work side-by-side" mean?
Well, understanding that 3.0 and 3.5 aren't "stand-alone" Frameworks and
therefore are "special", it means that you can have the 1.0, 1.1, and 2.0
(by itselft), 3.0 (which includes 2.0), and 3.5 (which includes 2.0),
running side-by-side.
It's best to think of all these Framework versions in terms of a version of
the CLR (Common Language Runtime - this is the core engine that processes
your .NET code). There isn't a 3.0 or 3.5 CLR. Both of those Frameworks
use the 2.0 CLR.
So, in terms of unique CLR's there is 1.0, 1.1, and 2.0 and each of these
Frameworks exists independent of each other on your machine. You can run
one .NET application in the 1.0 CLR and another in the 2.0 CLR. You don't
have to worry about the 2.0 CLR being backwards compatible with the 1.x
CLR's because you can just install them in addition to the 2.0 CLR.
If 3.5 is "built on" 3.0 why is it smaller? Do programs make use of 3.5 as
well as 3.0 and 2.0, or just one?
3.5 isn't built on 3.0, it's built on 2.0 and so is 3.0.
2.0 is the key as this is the Framework that has everything it needs to
stand on its own.
3.0 simply adds 3 libraries (WCF, WF, WPF) that run on the 2.0 Framework.
3.5 simply adds 2 major libraries (AJAX & LINQ) along with a few other
enhancements that run on the 2.0 Framework.
Lets say you had a .NET app that only referenced 3.5. Could you,
hypothetically, delete the v1.8, v2.* and v3.0 folders and the app would
run fine?
No. 3.5 and 3.0 are extensions of 2.0. When you install the 3.0 Framework,
it installs 2.0 and when you install the 3.5 Framework, it installs 3.0 and
2.0.
I'm showing my ignorance of .NEt here, I'm sure. Its prossibly an
ignorance shared by many a novice .NET programmer.
This particular topic can take a little while to get straight as most people
I've run into feel that 3.0 (which is just an extension of 2.0) should have
been numbered something more trivial, such as 2.1 and 3.5 (which is yet
another extension of 2.0 and 3.0) should have been numbered something like
2.5. This would have made the whole verioning issue much easier to
understand. But again, if you think in terms of CLR's and know that 3.0 and
3.5 don't include new CLR's, then you get that both of those versions still
need 2.0, which has the CLR for them to run against.