Most of our software is developed using Microsoft .NET and this causes an issue to comes up from time to time: What version to target. It’s not such an easy issue to resolve, as it turns out.
There are several major versions that one can choose to support:
Version 1.0 and 1.1
These versions aren’t supported any more by Microsoft development tools and aren’t really on the table.
This is the oldest version supported by Microsoft’s current tools. It supports all of the latest language features but is missing many of the libraries that modern applications might want to use. It’s also the most widely distributed.
Version 2.0 Service Pack 1
This version includes a few additional libraries and fixes but strangely isn’t as widely distributed as one might think. Confusingly, it is not included as part of Version 3.0 as its version number would imply. I blogged about this strange annoyance 2 years ago.
This is the first version to be included with Windows (Vista to be exact). It includes WPF (Windows Presentation Foundation) which is Microsoft’s next generation GUI. It has a good installed base since it shipped with Vista. Microsoft dropped support for Windows 2000 with this version.
Version 3.5 Service Pack 1
Service Pack 1 followed pretty closely on the heels of 3.5 and is the version that ships with Windows 7 and Server 2008 R2 (more on that below). It can be considered WPF version 2.
The latest and greatest version is good for the bleeding edge, but its installed base is smaller than the others.
Microsoft has been shipping .NET with its servers for a few years now but it’s not installed by default. That makes it necessary to treat servers similar to Windows XP in that it needs to be assumed that .NET isn’t installed.
Microsoft has never deployed .NET through Windows Update to computers that don’t already have it installed. As a developer who uses .NET I simply cannot understand this decision. It’s less of a concern today since Vista and Windows 7 do get updated to Version 3.5 SP 1 (and XP if it has any version installed). Version 4 is still an optional update but that may change in the future.
So where does that leave us? Here are the broadstrokes that I’ve been following.
If you need to support Windows 2000 go with Version 2.0. Skip SP 1 if you can avoid it since it’s currently living in a strange part of limbo.
Version 3.5 SP 1 is the best choice for everything else. It’s been out for nearly 2.5 years and has an installed base close enough to 2.0 to make it worth it for the extra features.
Hold off on Vesion 4 for now unless it has something that is critical for the application and, if so, swear at Microsoft quietly under your breath for not making it an automatic update.
That’s the high level developer’s perspective on the issue. What’s the system administrator point of view? Do you have a policy on installing and deploying .NET on your system?