【问题标题】:Calling vcvarsall.bat gives "Windows cannot find powershell.exe" on Windows 7 / VS 2019 Build tools调用 vcvarsall.bat 在 Windows 7 / VS 2019 构建工具上给出“Windows 找不到 powershell.exe”
【发布时间】:2020-10-14 19:40:30
【问题描述】:

我之前安装了 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)

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢@dxiv,问题确实是我在 PATH 中做了一些“清理”,并且可能不小心删除了 PowerShell PATH...
    • 对于问题的第二部分,为什么可能是cl : Command line error D8027 : cannot execute 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\c1xx.dll' 的原因?这个文件存在于文件系统中,我想知道为什么它不能被执行......你有什么想法@dxiv?
    • @Basj 这一定与您的构建工具设置或配置有关。我正在使用完整的 VS 安装,但没有看到错误或任何与此相关的错误。您在PATH 环境中引用vcvarsall 之后的第一个 路径吗?
    猜你喜欢
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2016-01-06
    • 2017-12-17
    • 2013-06-08
    • 1970-01-01
    相关资源
    最近更新 更多