You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
When building with VS2026 on Windows, use PlatformToolSet v145 by default #144679
As discussed offline with @zooba and @Fidget-Spinner as a preparational step to be able to use tailcalling (#139922) for the official Windows binaries beginning with 3.15.
It can currently build without modifying any files, but packaging into an MSI bundle still fails. When running ./Tools/msi/buildrelease.bat, I always get: MSB8020: The build tools for v145 (Platform Toolset = 'v145') cannot be found.
Detailed outputs:
$ ./Tools/msi/buildrelease.bat -x64 --skip-nuget --skip-buildUsing py -3.14 (found 3.14 with py.exe)Fetching external libraries...Fetching external tools...binutils already exists, skipping.gpg already exists, skipping.htmlhelp already exists, skipping.nuget already exists, skipping.redist-1 already exists, skipping.wix-314 already exists, skipping.Finished.Using "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\amd64\MSBuild.exe" (found in the PATH)MSBuild version 18.3.0-release-26070-10+3972042b7 for .NET FrameworkBuild started 2026/2/21 8:31:01.Project "E:\Sources\Python\Tools\msi\launcher\launcher.wixproj" on node 1 (default targets).Project "E:\Sources\Python\Tools\msi\launcher\launcher.wixproj" (1) is building "E:\Sources\Python\PCbuild\pyshellext.vcxproj" (2) on node 1 (Build target(s)).C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Microsoft\VC\v180\Microsoft.CppBuild.targets(473,5): error MSB8020: The build tools for v145 (Platform Toolset = 'v145') cannot be found. To build using the v145 build tools, please install v145 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [E:\Sources\Python\PCbuild\pyshellext.vcxproj]Done Building Project "E:\Sources\Python\PCbuild\pyshellext.vcxproj" (Build target(s)) -- FAILED.Done Building Project "E:\Sources\Python\Tools\msi\launcher\launcher.wixproj" (default targets) -- FAILED.Build FAILED."E:\Sources\Python\Tools\msi\launcher\launcher.wixproj" (default target) (1) ->"E:\Sources\Python\PCbuild\pyshellext.vcxproj" (Build target) (2) ->(PrepareForBuild target) -> C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Microsoft\VC\v180\Microsoft.CppBuild.targets(473,5): error MSB8020: The build tools for v145 (Platform Toolset = 'v145') cannot be found. To build using the v145 build tools, please install v145 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, andthen selecting "Retarget solution". [E:\Sources\Python\PCbuild\pyshellext.vcxproj] 0 Warning(s) 1 Error(s)Time Elapsed 00:00:00.18
Sorry, I cannot reproduce. This builds launcher.wixproj / pyshellext.vcxproj for me in a fresh environment and creates a working launcher.msi. But then soon later of course fails due to missing files because of --skip-build.
Hence, I also did a "full" build
$ ./Tools/msi/buildrelease.bat
and got a working launcher.msi, installer python-3.15.0a6-amd64.exe and python-3.15.0a6-embed-amd64.zip.
It can currently build without modifying any files
So it seems v145 is found in this case ...
but packaging into an MSI bundle still fails
... but here it is not found in your case. This is weird, so I can only speculate: maybe you do not have v145 for x86 and arm installed? For the launcher, shellext is built in those configurations, too ...
Thanks for the reply. I can confirm your findings. Running ./Tools/msi/buildrelease.bat -x64 --skip-nuget in a clean VM environment completes without any issues.
For context, I had previously run ./PCbuild/build.bat to generate the binaries and added --skip-build to buildrelease.bat expecting it to reuse the existing build outputs. It turns out that doing so somehow leads to the v145 not found error.
Since it works seamlessly without the flag in a clean environment, the required toolchains are definitely present. Appreciate your time checking this!
@DEVwXZ4Njdmo4hm Just as a heads-up, we'll be deleting the MSI build in its entirety after 3.15 gets its own branch - it won't be part of 3.16. So if you're relying on it, you'll want to be planning to fork that part yourself at some point (or possibly just create a simpler one). See PEP 773 for more info.
Yes - the only reason I've kept it open was to remind me to switch from the preview windows-2025-vs2026 to windows-2025 once the latter officially supports VS2026 (which should happen soon). Best done after the 3.15 beta1 release I think.
But this most probably deserves its own issue, anyway ...
Activity
chris-eibl commentedon Feb 10, 2026
Using
v145also changes the appearance in the VS2026 solution explorer fromto

GH-144679: When building with VS 2026 on Windows, use PlatformToolset…
GH-144679: MSVC tailcall CI no longer needs to specify PlatformToolset (
GH-144679: Switch to windows-2025-vs2026 build image in GitHub Actions (
DEVwXZ4Njdmo4hm commentedon Feb 21, 2026
It can currently build without modifying any files, but packaging into an MSI bundle still fails. When running
./Tools/msi/buildrelease.bat, I always get:MSB8020: The build tools for v145 (Platform Toolset = 'v145') cannot be found.Detailed outputs:
chris-eibl commentedon Feb 21, 2026
Sorry, I cannot reproduce. This builds
launcher.wixproj/pyshellext.vcxprojfor me in a fresh environment and creates a workinglauncher.msi. But then soon later of course fails due to missing files because of--skip-build.Hence, I also did a "full" build
and got a working
launcher.msi, installerpython-3.15.0a6-amd64.exeandpython-3.15.0a6-embed-amd64.zip.So it seems
v145is found in this case ...... but here it is not found in your case. This is weird, so I can only speculate: maybe you do not have
v145for x86 and arm installed? For the launcher, shellext is built in those configurations, too ...DEVwXZ4Njdmo4hm commentedon Feb 22, 2026
Thanks for the reply. I can confirm your findings. Running
./Tools/msi/buildrelease.bat -x64 --skip-nugetin a clean VM environment completes without any issues.For context, I had previously run
./PCbuild/build.batto generate the binaries and added--skip-buildtobuildrelease.batexpecting it to reuse the existing build outputs. It turns out that doing so somehow leads to thev145not found error.Since it works seamlessly without the flag in a clean environment, the required toolchains are definitely present. Appreciate your time checking this!
zooba commentedon Feb 23, 2026
@DEVwXZ4Njdmo4hm Just as a heads-up, we'll be deleting the MSI build in its entirety after 3.15 gets its own branch - it won't be part of 3.16. So if you're relying on it, you'll want to be planning to fork that part yourself at some point (or possibly just create a simpler one). See PEP 773 for more info.
pythonGH-144679: When building with VS 2026 on Windows, use PlatformT…
pythonGH-144679: MSVC tailcall CI no longer needs to specify Platform…
pythonGH-144679: Switch to windows-2025-vs2026 build image in GitHub …
pythonGH-144679: When building with VS 2026 on Windows, use PlatformT…
pythonGH-144679: MSVC tailcall CI no longer needs to specify Platform…
pythonGH-144679: Switch to windows-2025-vs2026 build image in GitHub …
StanFromIreland commentedon May 2, 2026
Triage: @chris-eibl, is this complete?
chris-eibl commentedon May 2, 2026
Yes - the only reason I've kept it open was to remind me to switch from the preview
windows-2025-vs2026towindows-2025once the latter officially supports VS2026 (which should happen soon). Best done after the 3.15 beta1 release I think.But this most probably deserves its own issue, anyway ...
chris-eibl commentedon May 30, 2026
Done #150605, so closing here.
[3.14] GH-144679: When building with VS 2026 on Windows, use Platform…