Microsoft's marketing department do love to confuse matters.

.NET 2.0, 3.0 and 3.5 (and their various service packs) all use the 2.0 version of the Common Language Runtime specification (i.e. the main library that makes everything work). So code built for .NET 2.0 should work fine on all of them (unless of course you get an odd case where a bug fixed in the CLR over the period breaks something).

What 3.0 and 3.5 do is add extra functionality in extra separate libraries. It would have been a lot less confusing for everyone if the naming had made that clear frown
_________________________
Remind me to change my signature to something more interesting someday