Microsoft Visual C++ 14.0 compiler not available on Windows 2019 image

In order to build Python 3.5 binary wheels for Windows, you need to have the Visual C++ 14.0 compiler. I’d like to use the Windows Server 2019 image (but do tell me if that doesn’t make sense and I should stay with 2016) but this only has Visual Studio 2019 which doesn’t have the Microsoft.VisualStudio.Component.VC.v140 component anymore and it looks like this image also doesn’t have the Visual C++ Buildtools installed which would provide a stand alone compiler. Could either Visual Studio 2017 or the Buildtools be added to the 2019 image?

5 Likes

I think so.  We’ll have to take a look to make sure that we can have all those versions side-by-side.  In the meantime, staying with 2016 should be a successful workaround.

Any news on this? Workaround will be killed very soon, VS2017 won’t be available for some time as well… Is there any way to keep using Actions with v140 projects?

2 Likes

@ethomson How should we do to keep our jobs on VS2017 after November 7 (which is in 2 days…)? VS2019 is very new, we cannot deploy binaries using only VS2019.

2 Likes

We’re adding Microsoft.VisualStudio.Component.VC.140 to the Windows 2019 images.

1 Like

hi @ethomson , any news when it will be added to 2019? looking at the documentation here: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/software-installed-on-github-hosted-runners#windows-server-2019 still not listing 140 as part of it.

hi @ethomson, windows-2016 is noted as deprecated last month. How should we compiled our project on VS2017?

In case anyone stumbles over this, what I said initially was actually wrong. Python 3.5 and higher have to be built with MSVC (Visual Studio C++ compiler) 14.X (see WindowsCompilers - Python Wiki), not 14.0. And given that all MSVC versions 14.X are ABI compatible (see C++ binary compatibility 2015-2019 | Microsoft Docs) any version can be used, including the latest Visual Studio 2019. Note that version numbers of Visual Studio are distinct from the C++ compiler versions they contain, which may sometimes lead to confusion.