首页 > 解决方案 > 调用 vcvarsall.bat 在 Windows 7 / VS 2019 构建工具上给出“Windows 找不到 powershell.exe”

问题描述

我之前安装了 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 构建工具,调用vcvarsall.bat会显示以下消息:

Windows 找不到“powershell.exe”

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

cl:命令行错误 D8027:无法执行 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\c1xx.dll'

我不明白为什么 powershell 必须设置一些环境变量并设置所有要使用的东西cl.exe

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

vcvarsall.bat我们不应该像以前的版本一样先打电话吗?

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

在此处输入图像描述

标签: windowsvisual-studiovisual-c++visual-studio-2019visual-studio-2017-build-tools

解决方案


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

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


推荐阅读