Visual Studio versioning and compatibility

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.
This entry was posted in Oldskool/retro programming, Software development and tagged , , , , , , , , , . Bookmark the permalink.

One Response to Visual Studio versioning and compatibility

  1. GL1zdA says:

    Visual Studio 2008 SP1 built executables work fine on Windows 2000 with SP4 and the official Update Rollup 1 (you need UR1 to install the VS2008 SP1 C Runtime). Visual Studio 2008 is also the last Visual Studio to target many Windows Mobile devices.

    And to be precise. The first version of Visual Studio was 97 and included VC++ 5.0. But VC++ 4.0 was the first to have the extensible IDE which could be integrated with Fortran Powerstation, MSDN Library, Visual Test and the first version of J++.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s