调用 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
不再被使用或需要。
我之前安装了 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
不再被使用或需要。