从 PowerShell 设置 Visual Studio 环境变量

And*_*eas 6 powershell cmd batch-file visual-studio-2012

我安装了 Visual Studio 9.0,但我想从 PowerShell 手动使用它。它带有两个安装脚本:vcvars32.bat用于 32 位编译器和vcvars64.bat用于 64 位编译器。当我打开cmd.exe并运行其中一个脚本时,它会设置一切正常,我可以cl.exe毫无问题地运行。但是,当我从 PowerShell 运行这些安装脚本之一时,它不起作用。脚本运行良好,但cl.exe之后尝试运行会产生“cl.exe找不到”错误!PATH在运行安装脚本之一后查看环境变量的内容,我可以看到PATH实际上根本没有修改。

因此,似乎从 PowerShell 运行的批处理文件维护自己的环境变量状态,一旦批处理文件终止,该状态就会消失。那么有没有办法从 PowerShell 运行批处理文件并使这些批处理文件影响当前 PowerShell 会话的实际环境变量?因为那是我需要的。毕竟,所有这些都是由vcvars32.bit并且vcvars64.bit正在设置环境变量完成的,但它似乎只能从cmd.exe,而不是从 PowerShell 工作。

maj*_*tor 8

您应该使用InvokeEnvironment脚本来做到这一点。检查其手册页:

Invoke-Environment <path_to_>vsvars32.bat
Run Code Online (Sandbox Code Playgroud)

您可以通过确定操作系统位并制作vsvars<OsBits>.bat.

例子:

PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> $env:INCLUDE -eq $null
PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> $true
PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> Invoke-Environment .\vsvars32.bat
PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> $env:INCLUDE
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\winrt;
Run Code Online (Sandbox Code Playgroud)


8DH*_*8DH 5

现在有一个 powershell 模块posh-vs可以在你的$profile.

PS> Install-module posh-vs
PS> Install-PoshVs
Run Code Online (Sandbox Code Playgroud)