After the previous post on DirectX version information, I figured it would be useful to also give a quick overview of Visual Studio compatibility. Because not all versions of Visual Studio run on all versions of Windows, and neither does the code they generate. So here is an incomplete overview:
- Visual Studio and Visual Studio 97 run on Windows 95 and higher and Windows NT 3.51sp5 or higher
- Visual Studio 6 runs on Windows 95 and higher and Windows NT 4sp3 and higher
- Visual Studio .NET (2002) runs on Windows 2000 or higher
- Visual Studio .NET 2003 runs on Windows 2000 or higher
- Visual Studio 2005 runs on Windows 2000sp4 or higher
- Visual Studio 2008 runs on Windows XPsp2 or higher
- Visual Studio 2010 runs on Windows XPsp3 or higher
- Visual Studio 2012 runs on Windows 7sp1 or higher
Although the newer versions of Visual Studio no longer ran on Windows 9x or NT3/4, the code they generated was still compatible with these older OSes. Visual Studio 2008 stopped supporting the Win9x branch, and also NT4 and lower (although apparently Visual Studio 2005 may accidentally have pulled in a kernel function that was not available on Windows 95, and the binary needs to be patched before it will work). Visual Studio 2010 also dropped Windows 2000 support. Windows XP and higher are still supported by all versions of Visual Studio (initially Microsoft wanted to abandon XP in Visual Studio 2012, but because of the large demand, they patched XP support back in).
Note that in some cases, service packs for Visual Studio may also limit compatibility. I believe VS2008sp1 also removes the Windows 2000 compatibility, and VS2005sp1 removes the Windows 9x compatibility.
The above only applies to the full Visual Studio suite, which is only available for Win32-based platforms. Before Visual Studio, Microsoft sold the different languages separately, as in Visual Basic, Visual C++, Visual FoxPro.
The first version of Visual Studio included Visual C++ 4.0. All versions of Visual C++ are available in a 32-bit edition. Version 1.5 was the last version to also have a 16-bit edition. 2.0 and above are 32-bit only.
Prior to Visual C++, Microsoft offered QuickC as an IDE, which was 16-bit only (and initially it was an MS-DOS text-based environment. There was one “QuickC for Windows” release, before moving to Visual C++). They also sold the compiler separately, as Microsoft C. The 16-bit versions of Visual C++ and the newer versions of Microsoft C (3.0 and higher) can target both MS-DOS and Win16 applications. Although, Windows development has to be seen in the proper perspective. Windows 1.x and 2.x had very limited APIs, and the Win16 API as we know it today (and as it is still supported by 32-bit versions of Windows) generally refers to the more mature API from Windows 3.x. Another interesting factoid is that some versions of Microsoft C (5.1 and later?) can also target OS/2 2.x, which at the time was a joint project between IBM and Microsoft.
So well, here are a few rules of thumb when choosing development tools for MS-DOS/Windows programming:
- Visual C++ 1.52 for Win16 code (the compiler tools can also be used for MS-DOS, but the IDE can only be used in Windows).
- Visual Studio 6.0 for Win32 code for Win9x or NT3/4.
- Visual Studio 2010 for developing Win32/64 code for XP/XP x64 and newer.