Each version of Microsoft's .NET frameworks have a limited support lifetime, e.g.:
- support for .NET Framework 1.1 ended 09/09/2005
- support for .NET Framework 2.0 ended 12/01/2010
- support for .NET Framework 3.0 ended 12/07/2011
I own an application from 2004 that was written with .NET Framework 1.1. If you try to install the .NET Framework version 1.1 on a modern Windows 7 64-bit machine you will get an error - it just won't work. A program written in 2006 is no longer usable; you might as well throw it away.
Does this mean that a program that I write in .NET 3.5 today will, at some point in the future, just be unusable?
Microsoft went to great lengths with the Windows API to maintain backwards compatibility. A program written 18 years ago (for Win32 or Win32s) will still run on Windows of today. (I know - I own one. It originally ran on Windows 3.1 and still runs on Windows 7 64-bit.)
A native program that I write today will still work 18 years from now (likely). But it seems that a .NET program I write today has no assurance that it will continue to function.
Is there any compatibility commitments from Microsoft regarding .NET framework 2.0 or later? I know .NET Framework 1/1.1 was an ugly stepchild; that .NET framework 2.0 broke compatibility with 1.1; but every framework since 2.0 has been compatible with 2.0.
Is there a note somewhere that if I write a managed application with .NET 2.0 or newer, that it should continue to run on Windows 8, Windows 9, Windows 10, etc.?