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.