调用 vcvarsall.bat 在 Windows 7 / VS 2019 构建工具上给出 "Windows cannot find powershell.exe"

Calling vcvarsall.bat gives "Windows cannot find powershell.exe" on Windows 7 / VS 2019 Build tools

我之前安装了 Visual Studio 2015 (14.0) 构建工具,我可以构建一个简单的 C++ 程序,没有任何 IDE,使用:

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
cl helloworld1.cpp

现在我安装了 Visual Studio 2019 Build Tools,调用 vcvarsall.bat 给出了这个消息:

Windows cannot find 'powershell.exe'

但关闭对话框后,它仍然继续(!)。但随后它失败了:

cl : Command line error D8027 : cannot execute 'C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Tools\MSVC.26.28801\bin\HostX64\x64\c1xx.dll'

我不明白为什么 powershell 必须设置一些环境变量并设置所有内容才能使用 cl.exe

问题:使用 VS Build Tools 2019 调用 cl.exe 的正确方法是什么?

我们不应该像以前的版本一样先调用 vcvarsall.bat 吗?

(重要:我正在寻找 100% 终端模式,没有 IDE)

官方方法是将 %SystemRoot%\System32\WindowsPowerShell\v1.0 永久添加到您的 PATH 或在调用 vcvarsall.bat.

之前添加

另一种方法是在调用 vcvarsall.bat 之前执行 set VSCMD_SKIP_SENDTELEMETRY=1。这是有效的,因为 vcvarsall 内部调用 vsdevcmd,后者又使用 powershell 配置“如果用户的 VS 已选择加入,则发送遥测数据 ”。然而,当 VSCMD_SKIP_SENDTELEMETRY 被定义时遥测步骤被绕过(虽然这似乎没有记录,因此在未来的版本中可能会发生变化),然后 powershell 不再被使用或需要。