views:

357

answers:

5

From the first days the .NET framework came out there was a minimum OS support:

  • .NET 1.0 - Windows NT or higher (Windows 98/ME are also supported)
  • .NET 2.0 - Windows 2000 or higher (Windows 98/ME are also supported)
  • .NET 3.0 - Windows XP or higher
  • .NET 3.5 - Windows XP or higher

This minimum OS support made possible to ignore platform-specific issues by using just the framework. Newer features were ignored on older platforms. For example, "Tile View" style in the ListView control or form transparency on the Windows 98/ME.

However, in the System.Core.dll (part of .NET 3.5) there are some classes that use a new Vista API and throw PlatformNotSupportedException if used on an XP machine. For example, take a look on the new EventLogReader class (in the System.Diagnostics.Eventing.Reader namespace).

Does Microsoft break with the tradition of platform support?

To be fair .NET 2.0 had already classes that supported NTFS security features, which are not available on the Windows 98/ME.

+3  A: 

A minimum OS support means that the product was tested on particular platform and above. It does not guarantee that all the features (or classes/APIs in the case of a dev platform like .Net) will work on all the supported platforms.

There are Vista specific native APIs which do not exist in XP. .Net 3.5 adds support for managed world for these APIs, but it does not attempt to provide managed implementation for non-existing native APIs on XP.

Franci Penov
A: 

Platform support has always varied by type. Many types are not supported by the Compact Framework, for example.

fatcat1111
+1  A: 

I can tell you with experience that .NET has never really worked on Windows 98 or ME. I remember back in 2002 when version 1.0 was new, some colleagues and I discovered that anything more complicated than a WinForm with some buttons and dead simple functionality would flat out not run on Windows 9x, despite Microsoft's claims to the contrary. Given that we were a year into XP and we could reasonably expect Windows 2000 at least on the machines we were dealing with at the time, it wasn't a big deal.

But basically Microsoft neglecting the older versions of Windows with .NET is nothing new. At least they're throwing PlatformNotSupportedException exceptions these days.

Schnapple
+1  A: 

Microsoft is obviously pushing towards a Vista-centric development environment. It's not just because of the obvious 'we need to make money' reason, but also because Vista is where the cool new APIs are sprouting.

To be fair, it's been always been like that with the Windows API, and it will probably be like that with .NET. There's not such a "tradition" as you describe, but rather a tradition of making APIs that might not work notify you that you are in an operating system that doesn't support it. They always try to be backwards compatible, not forwards limiting, if you understand :)

dguaraglia
A: 

I can't speak for all of it, but I know that for example the Event Log system in Vista was totally overhauled and bears almost no resemblance whatsoever to the event log system in Windows XP. It's probably just literally incompatible.

Mark Allen