Here at PDC, Misha Shneerson has just delivered a talk on a couple of very interesting new features provided by .NET 4.0. He did explain up front that these features have very broad applicability, but reading the session evals it's pretty obvious that a lot of people didn't get it. Probably this is because Misha explained the first feature in the context of COM interop - and this gave the impression that the whole talk would be about COM interop. Not so - and he went on to show how you can achieve loose type coupling and version resiliency in a completely managed context.
The two major features are Type Embedding and Type Equivalence. These are changes in both the CLR and in the C# and VB compilers. Using the new features, you can achieve true version independence. This means that you can build composable applications where your add-ins can run against any version of the host application – giving you backward and forward compatibility. Anyone who builds shared libraries (which is, basically, everyone) can take advantage of this.
Think about it: you can now identify managed types by GUID.
Do yourself a favor and read up on Misha's blog posts on these features. The first one is here.