Games for Windows and the DirectX SDK blog

Technical tips, tricks, and news about game development for Microsoft platforms including desktop, Xbox One, and UWP


Project maintained by walbourn Hosted on GitHub Pages — Theme by mattgraham
Home | Posts by Tag | Posts by Month

VS 2017 (15.7 update)

visualc

Originally posted to Chuck Walbourn's Blog on MSDN,

The Visual Studio 2017 (15.7 update) is now available for download, and you should see the ‘new update available’ notification in the coming weeks–you can also get the update now by downloading the ‘free trial’ version of the installer which will let you update your system.

The latest VS 2017 Redistribution packages are available (x86, x64), as well as the Remote Debugging Tools (x86, x64). For more on the Visual Studio 2017 (15.7) update, see the release notes.

Compiler and CRT

VS 2017 (15.7) includes a new version of the C/C++ complier (19.14.26428). See this post and MSDN for details on the changes to C++ conformance.

15.7 update C++ compiler
15.7.0 19.14.26428
15.7.2 19.14.26429
15.7.3 19.14.26430
15.7.4 19.14.26431
15.7.5 19.14.26433

Note: Per this blog post, the _MSC_VER value is now 1914 instead of 1910, 1911, 1912, or 1913.

The C/C++ Runtime (14.14.26405) is included in this update. Remember that VS 2015 and VS 2017 share the same runtime redistributable binaries and that VS 2015 Update 3 is binary compatible with VS 2017–code or static library built with one can be linked to the other–, so this is the latest version for both.

Windows 10 SDK: When installing a fresh copy of VS 2017 (15.7) the default Windows 10 SDK is now the April 2018 Update (17134). Also note that the Windows 10 SDK (17134) is once again one VS install component (Microsoft.VisualStudio.Component.Windows10SDK.17134) instead of multiple components (Microsoft.VisualStudio.Component.Windows10SDK.*.Desktop, Microsoft.VisualStudio.Component.Windows10SDK.*.UWP, Microsoft.VisualStudio.Component.Windows10SDK.*.UWP.Native) as it was for 15063 / 16299.

C++/WinRT: With the Windows 10 SDK (17134), you no longer need to use the GitHub project or NuGet package to obtain the C++/WinRT projection headers as they are now a part of the Windows 10 SDK.

Static Analysis: The 15.7 update version of /analyze now includes part of the C++ Core Guidelines checkers in the default native ruleset. For more details, see this blog post. The current state of the new /analyze is quite a bit noiser than it was before, so I expect some further refinement in future releases. If you have <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> in your project files, you’ll want to change it since that now pulls in all the C++ Core Guidelines Checker rules which is highly likely to be an overwhelming mass of new warnings.

__cpluplus: The preprocessor symbol __cplusplus is often used in guards like #ifdef __cplusplus to handle both C and C++ scenarios, but it also has a value that is supposed to indicate which C++ Standard the compiler conforms to. For various reasons, the Visual C++ compiler has been returning “199711” for ages. The 15.7 update includes a new compatibility switch /Zc:__cplusplus which will cause the Visual C++ compiler to report the proper value of “201402” (or “201703” if using /std:c++17). It is off by default because it has the potential to break a lot of code. Developers are strongly encouraged to turn on this switch and clean up their codebases for a future where this is on by default. See this blog post for more information.

Spectre mitigations: This update includes some changes to the Spectre mitigation compiler support. See this blog post for details.

GitHub: I’ve updated directx-vs-templates, DirectX Tool Kit (DX11 / DX12), DirectXTex, DirectXMesh, UVAtlas, DXUT, and FX11 for VS 2017 (15.7) support. Direct3D 12 developers should also pick up the latest version of D3DX12.H from DirectX-Graphics-Samples

Related: VS 2017 (15.6 update), VS 2017 (15.5 update), Windows 10 Fall Creators Update SDK (15.4), VS 2017 (15.3 update)Windows 10 Creators Update SDK (15.1/15.2), Visual Studio 2017 (15.0)