question

JamesJ-9502 avatar image
0 Votes"
JamesJ-9502 asked LimitlessTechnology-2700 answered

Do we need to choose specific Windows 10 SDK or always latest in VS 2019 IDE?

We have upgraded VS 2017 to VS 2019. In VS 2019 we do not have specific option to choose Latest installed 10 SDK version. So, we used to selected specific SDK version in VS 2017. But, in VS 2019 by default provided option to choose latest Windows 10 SDK installed version and also any of the list of installed version can be selected from the Dev Box. In development we have requested 10.0.18362 as Windows SDK version to choose and test.

My question, Is it good to go with specific version or latest installed Windows SDK version because customer can use any version of Windows 10, server 2016 and 2019.

Can you please provide your valuable intputs.

122695-image.png


c++vs-generalwindows-10-network
image.png (30.8 KiB)
· 6
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Unfortunately, the guidance given by Microsoft is extremely vague.

The docs said, "In the Target Platform Version dropdown list, choose the version of the Windows 10 SDK you want to target. Generally speaking, we recommend you choose the latest installed version. Choose the OK button to apply the change."

I didn't see any discussion of why this is recommended or the possible pitfalls of choosing a version of the Win10 SDK other than the latest one.

0 Votes 0 ·

True, it is vague.
I'd guess that you may only want to choose an earlier one in order to totally avoid things in newer OS versions, though correct use of the platform define symbols ought to prevent that anyway. Having said that, I vaguely recall there was some suspect advice given in a MS article on using those symbols several years ago.

0 Votes 0 ·
Show more comments
DavidLowndes-6766 avatar image
0 Votes"
DavidLowndes-6766 answered DavidLowndes-6766 commented

Some feedback...

The latest SDK is recommended as its the most up-to-date for security/bug fixes as well as supporting all Microsoft operating systems that are currently in support.

Reasons to choose an older SDK would be if an organization has decided to "standardize" on that version, or if you need an old SDK for an out of support OS version.

· 2
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Since it appears that the SDK headers do differentiate between various versions of Windows 10 it seems to me that if someone wanted to standardize on an older or out of support OS build that the latest SDK could be used with the desired build targeted using the NTDDI_VERSION macro. I wonder why the feedback you received didn't mention this possibility.

0 Votes 0 ·

I don't know; there may be more at play than we're considering, or it may be a "just in case" situation.

0 Votes 0 ·
LimitlessTechnology-2700 avatar image
0 Votes"
LimitlessTechnology-2700 answered

Hello James,

From my experience, in order to clarify:

Windows supports programs written in any language or IDE. To that end, Microsoft publishes a canonical set of headers, libraries, tools, and samples for that specific build of Windows.

For example, there are separate SDKs for Windows XP, Vista, Windows 7, and Windows 8. Each SDK has its own set of headers, although in practice each new SDK is a superset of the last.

These headers can be used with any C/C++ compiler, and are often converted for use in other programming languages (Delphi, etc.).

A different division of Microsoft produces Visual Studio, with its own release cycle. They package up the headers and libraries, but typically not the tools or samples, for the latest build of the Windows SDK available at the time Visual Studio is released.

This was true until latest SDK where now contains all API from previous versions there for the default includes the needed.

Cheers,
Luis P

5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.