KiY*_*ter 5 windows powershell windows-10
我无法cl在 PowerShell 中使用该命令。
我尝试将以下命令添加到我的 PowerShell 配置文件到 exec vcbuildtools.bat,但 PowerShell 无法识别 PowerShell 上的cl命令?
&"C:\Program Files (x86)\Microsoft Visual C++ Build Tools\vcbuildtools.bat"
Run Code Online (Sandbox Code Playgroud)
操作系统:Windows 10
为了清楚起见,cl即使在 PowerShell 中运行此问题后,我也正在解决不在 PATH 中的提问者的问题
&"C:\Program Files (x86)\Microsoft Visual C++ Build Tools\vcbuildtools.bat"
Run Code Online (Sandbox Code Playgroud)
我认为这归结为批处理文件无法将变量导出到 PowerShell(也相关:this question)的问题,正如您在vcbuildtools.bat. 我认为这是因为 PowerShell 调用 cmd.exe 子外壳来执行批处理文件,该文件会更改子外壳中的环境,但更改不会传播到父外壳,即 PowerShell。
一种方法是利用子shell 从父shell 继承环境这一事实。因此,如果您在 PowerShell 中运行它,则批处理文件设置的环境将被保留
cmd.exe /k "C:\Program Files (x86)\Microsoft Visual C++ Build Tools\vcbuildtools.bat" `& powershell
Run Code Online (Sandbox Code Playgroud)
注意`&. 该字符必须进行转义,因为它在 PowerShell 中具有特殊含义。
该Pscx模块具有Import-VisualStudioVars其导入环境变量的Visual Studio功能。一个示例用法是
Import-VisualStudioVars 2015 amd64
Run Code Online (Sandbox Code Playgroud)
如果您使用 VS/BuildTools 2015 并编译 64 位程序。您可以使用Pop-EnvironmentBlock来还原更改。有关man Import-VisualStudioVars -full更多信息,请参阅。
或者,Pscx 还具有Invoke-BatchFile通过批处理文件保留环境更改的功能。示例用法
Invoke-BatchFile "C:\Program Files (x86)\Microsoft Visual C++ Build Tools\vcbuildtools.bat"
Run Code Online (Sandbox Code Playgroud)
有关man Invoke-Batchfile -full更多信息,请参阅。
笔记
PowerShellGet 随 PowerShell 5 一起提供的 Pscx,并且可以作为 PowerShell 3 和 4 的可下载安装程序使用。| 归档时间: |
|
| 查看次数: |
5593 次 |
| 最近记录: |