使用PowerShell进行Visual Studio命令提示符

21
在将所有命令行操作迁移到PowerShell的重要举措中,我希望避免使用老式命令控制台。但是,Visual Studio命令提示符具有默认命令提示符中没有的各种环境变量和路径设置。我如何创建一个具有相同设置的“Visual Studio PowerShell”?

2
可能是重复的问题:如何在Visual Studio命令提示符中使用PowerShell? - Mark Meuer
6个回答

14
你可以使用例如这个脚本来导入Visual Studio命令提示符环境,查看脚本文档注释中的示例,例如对于Visual Studio 2010:
Invoke-Environment '"%VS100COMNTOOLS%\vsvars32.bat"' 

如果在 PowerShell 会话的开头(从您的个人资料或手动执行)完成了这项操作,您将在此 PowerShell 会话中获得所需内容。

或者您可以使用 Keith Hill 在此答案中提供的解决方案。


3

哎呀,@Yoni,我甚至在我的笔记本电脑上安装了PowerConsole,但从未使用过它。我想现在是个好时机。 - ProfK
1
PowerConsole已经整合到NuGet中http://nuget.codeplex.com/。您可以在Visual Studio中使用PowerShell和包管理系统。 - Doug Finke

3

PowerConsole已经整合到NuGethttp://nuget.codeplex.com/中。您可以在Visual Studio中使用PowerShell和包管理系统。


2
我使用这个脚本,叫做Initialize-VisualStudio.ps1,在我的个人资料中用点号引用来设置需要的环境变量,在我的当前会话中:
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

1
我所做的是创建一个简单的cmd批处理脚本,看起来像这样:
call "%VS80COMNTOOLS%vsvars32.bat"
powershell

然后我创建一个通过cmd调用它的快捷方式。快捷方式目标看起来像:

%windir%\System32\cmd.exe /k "SetupPSBuildEnvironment.cmd"

如果你想让控制台看起来像PowerShell控制台,只需在快捷方式属性中修改布局以适应你的喜好。

0

首先,检查此文件夹的内容:

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 - JustWe
1
C:/ProgramData/Microsoft/VisualStudio/Packages/_Instances/ 下有一个名为 1652063a 的文件夹,你猜它是什么意思。我想这是微软命名方式的一个实例。 - sunny moon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接