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.8 update)


Originally posted to Chuck Walbourn's Blog on MSDN,

The Visual Studio 2017 (15.8 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.8) update, see the release notes. See this post for details on the changes to the Standard Library.

Compiler and CRT

VS 2017 (15.8) includes a new version of the C/C++ complier (19.15.26726). This includes some improvements to the SSA Optimizer, as well as some additional performance improvements for the linker. This also fixes some codegen bugs including this one.

15.8 update C++ compiler
15.8.0 19.15.26726
15.8.4 19.15.26729
15.8.9 19.15.26730
15.8.5 19.15.26732

A new C++ debugging feature in VS 2017 (15.8) known as “Just My Code” stepping (JMC). For more details, see this blog post.

There’s a newly rewritten C++11/C99-compatible preprocessor in progress you can try out with /experimental:preprocessor. For more details see this blog post.

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

The C/C++ Runtime (14.15.26706) 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.

C++/WinRT: The C++/WinRT headers in the Windows 10 SDK (17134) are not fully compatible with the latest implementation of /permissive- in VS 2017 (15.8). You can work around the issue leaving Conformance Mode enabled by adding /Zc:twoPhase- to the Additional Options project setting. This is fixed when using the Windows 10 SDK (October 2018).

Xbox One: By default /JMC is enabled with VS 2017 (15.8) in Debug configurations which can lead to a link error when using the Xbox One XDK (unresolved symbol __CheckForDebuggerJustMyCode). You can easily resolve this by going to your project settings under C/C++ -> General and setting “Support Just My Code Debugging” to “No”, and then rebuild. This will be fixed in a future Xbox One XDK QFE at which time you can re-enable this feature if desired.

JMC: If you are shipping static libraries built from C++ code using VS 2017 (15.8), you probably want to turn off JMC anyhow to avoid forcing your customers to use 15.8, which otherwise would be compatible with 15.5, 15.6, and/or 15.7 as well. BTW, if you want the same static library to also work with VS 2015, then you are probably better off producing it with VS 2015 Update 3.

Static analysis: As I mentioned with the VS 2017 (15.7 update), the /analyze switch now includes some C++ Core Guidelines checker rules per this blog post. With VS 2017 (15.8 update), a fair amount of the ‘noise’ introduced with this change has been addressed.

GitHub: I’ve updated DirectX Tool Kit (DX11 / DX12), DirectXTex, DirectXMesh, and UVAtlas with changes for VS 2017 (15.8), mostly for /analyze cleanup. There’s also a new release of directx-vs-templates with a few minor tweaks.

Related: VS 2017 (15.7 update), 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)