从PowerShell设置Visual Studio环境变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从PowerShell设置Visual Studio环境变量相关的知识,希望对你有一定的参考价值。

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

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

答案

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

Invoke-Environment <path_to_>vsvars32.bat

您可以通过确定OS位和制作qazxsw poi来进一步概括这一点。

例:

vsvars<OsBits>.bat
另一答案

我手边没有Visual Studio,但批处理脚本很可能只是为当前会话设置变量。从PowerShell运行它们对您没有任何好处,因为它们将在子CMD进程中启动并更改该进程的进程环境,而不是父进程(PowerShell)进程。

我怀疑你需要将变量定义翻译成PowerShell,例如

PS C:Program Files (x86)Microsoft Visual Studio 14.0Common7Tools> $env:INCLUDE -eq $null
PS C:Program Files (x86)Microsoft Visual Studio 14.0Common7Tools> $true
PS C:Program Files (x86)Microsoft Visual Studio 14.0Common7Tools> Invoke-Environment .vsvars32.bat
PS C:Program Files (x86)Microsoft Visual Studio 14.0Common7Tools> $env:INCLUDE
C:Program Files (x86)Microsoft Visual Studio 14.0VCINCLUDE;C:Program Files (x86)Microsoft Visual Studio 14.0VCATLMFCINCLUDE;C:Program Files (x86)Windows Kits10include10.0.10586.0ucrt;C:Program Files (x86)Windows KitsNETFXSDK4.6.1includeum;C:Program Files (x86)Windows Kits10include10.0.10586.0shared;C:Program Files (x86)Windows Kits10include10.0.10586.0um;C:Program Files (x86)Windows Kits10include10.0.10586.0winrt;

set PATH=%PATH%;C:somewhere
set FOO=bar

将已翻译的定义写入.ps1文件并在PowerShell会话中点源该文件:

$env:Path += ';C:somewhere'
$env:FOO = 'bar'
另一答案

现在有一个powershell模块. C:path ovcvars.ps1 将在你的posh-vs中安装正确的东西。

$profile

以上是关于从PowerShell设置Visual Studio环境变量的主要内容,如果未能解决你的问题,请参考以下文章

将 PowerShell 用于 Visual Studio 命令提示符

从Visual Studio Code PowerShell运行Anaconda命令

Azure Service Fabric 从 Visual Studio 发布升级 - PowerShell 脚本错误

将PowerShell用于Visual Studio命令提示符

visual studio 2010问题修复

使用 vs 代码设置 nuxt/vue 调试的语法错误