In the olden days when developing a C++ project on Windows in Visual Studio, your Visual Studio version would have its own version of the C and C++ libraries, and your project would reference a specific version of the Windows SDK in order to access headers for access to the Win32 platform. If you had multiple versions of the Windows SDK installed there was a complicated system involving environment variables that enabled you to select which version of the Windows SDK Visual Studio would use by default.
It wasn't great, and getting it to work properly required a bit of digging around, but it did just about work.
Having just upgraded from VS2012 to VS2015 and it seems to me that whatever this system has been replaced with is either downright broken, or I'm just not understanding it.
Upgrading a simple VS2012 C++ console app that includes conio.h to VS2015 breaks with no error reported. Why? conio.h is no longer in the Visual Studio C/C++ libraries and instead now lives in Windows Kit 10, upgrading the project doesn't reseat the SDK used (as you would expect).
Creating a brand new Hello World C++ app in VS2015 the C++ project include directories inherit $(VC_IncludePath) and $(WindowsSDK_IncludePath). $(WindowsSDK_IncludePath) pulls in headers from C:\Program Files (x86)\Windows Kits\8.1 while $(VC_IncludePath) pulls in headers from C:\Program Files (x86)\Windows Kits\10.
So simple project upgrades fail with no error reported on the upgrade. Clean new console projects pull headers from 2 different Windows Kit installations simultaneously, and I now have entries for 8.1 and 10 under C:\Program Files (x86)\Microsoft SDKs and C:\Program Files (x86)\Windows Kits. Windows Kit 8.1 contains Win32 and WinRt headers, while Windows Kit 10 contains C/C++ headers.
Do I have a misconfigured and corrupted install or is this mess how it is supposed to be?
If this mess is how it is supposed to be, how is this intended to work? I've tried searching MSDN for info about Windows Kits but turned up nothing except stuff about the Windows Driver Kit, which used to be something completely different but I don't know whether it still is.
Is there any documentation out there that I've missed which explains the rationale behind this library configuration and how it's intended to be used?