在将所有命令行操作迁移到PowerShell的重要举措中,我希望避免使用老式命令控制台。但是,Visual Studio命令提示符具有默认命令提示符中没有的各种环境变量和路径设置。我如何创建一个具有相同设置的“Visual Studio PowerShell”?
PowerConsole已经整合到NuGethttp://nuget.codeplex.com/中。您可以在Visual Studio中使用PowerShell和包管理系统。
param([switch]$ArquitectureX86)
if($ArquitectureX86)
{ $arq= "x86"}
else
{ $arq="x64"}
pushd 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC'
cmd /c "vcvarsall.bat $arq&set" |
foreach {
if ($_ -match "=") {
$v = $_.split("="); set-item -force -path "ENV:\$($v[0])" -value "$($v[1])";
}
}
popd
call "%VS80COMNTOOLS%vsvars32.bat"
powershell
然后我创建一个通过cmd调用它的快捷方式。快捷方式目标看起来像:
%windir%\System32\cmd.exe /k "SetupPSBuildEnvironment.cmd"
首先,检查此文件夹的内容:
C:/ProgramData/Microsoft/VisualStudio/Packages/_Instances/
其中会有另一个文件夹,其名称由十六进制数字组成(例如2a7a9ed6
,但对于不同的MSVC版本来说,会有所不同)。我会将其称为<instance_id>
。
然后在PowerShell中运行:
Import-Module 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\Microsoft.VisualStudio.DevShell.dll'; Enter-VsDevShell <instance_id> -DevCmdArguments '-arch=x64'
目标
创建一个快捷方式:<path to your powershell.exe> -noe -c "&{Import-Module """C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell <instance_id> -DevCmdArguments '-arch=x64'}"
如果需要x86工具集,请显然删除-arch=x64
。
在Windows 10上,我使用MS Build Tools 16.9.5
和PowerShell 5.1.19041
,7.1.3
可以正常工作。
1652063a
? - JustWeC:/ProgramData/Microsoft/VisualStudio/Packages/_Instances/
下有一个名为 1652063a
的文件夹,你猜它是什么意思。我想这是微软命名方式的一个实例。 - sunny moon