You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell脚本中通过Launch-VsDevShell.ps1编译解决方案

在PowerShell中调用Launch-VsDevShell.ps1后执行带参数的MSBuild

方法1:直接通过Launch-VsDevShell的-Command参数执行MSBuild

这种方式会启动VsDevShell环境并直接运行指定的MSBuild命令,执行完成后环境自动退出(除非指定-NoExit)。

示例代码:

# 定义变量,根据实际场景替换
$date = Get-Date -Format "yyyyMMddHHmmss"
$sln = "YourSolution.sln"
$workfolder = $PWD.Path
$msbuildlogErr = "$workfolder\Logs\errors.log"

# 拼接完整MSBuild命令(路径含空格时用双引号包裹)
$msbuildCommand = @"
msbuild "$workfolder\build\$sln" /m /nr:false /bl:"$workfolder\Logs\binarylog_$date_$sln.binlog" /nologo /flp:errorsonly;LogFile="$msbuildlogErr"
"@

# 调用Launch-VsDevShell并执行MSBuild
# 注意根据你的VS版本、Edition调整脚本路径
& "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1" `
    -Arch x64 `
    -Command $msbuildCommand

方法2:先导入VsDevShell环境到当前会话,再执行MSBuild

如果需要在同一个会话中执行多个依赖开发者环境的命令,可以先导入环境变量,再单独调用MSBuild。

示例代码:

# 定义变量
$date = Get-Date -Format "yyyyMMddHHmmss"
$sln = "YourSolution.sln"
$workfolder = $PWD.Path
$msbuildlogErr = "$workfolder\Logs\errors.log"

# 导入VsDevShell环境到当前PowerShell会话
& "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1" `
    -Arch x64 `
    -NoExit:$false

# 执行MSBuild,此时会话已拥有开发者控制台的所有环境变量
$arglist = @"
"$workfolder\build\$sln" /m /nr:false /bl:"$workfolder\Logs\binarylog_$date_$sln.binlog" /nologo /flp:errorsonly;LogFile="$msbuildlogErr"
"@
$resbuild = Start-Process msbuild -ArgumentList $arglist -PassThru -Wait

注意事项

  • VS路径调整:根据你的Visual Studio版本(2019/2022等)和版本类型(Community/Professional/Enterprise)修改Launch-VsDevShell.ps1的路径。
  • 架构参数:使用-Arch指定目标架构,可选值有x86、x64、arm、arm64等,匹配你的编译需求。
  • 路径转义:如果路径包含空格,必须用双引号包裹,避免参数解析错误。
  • 等待执行完成:如果需要等待MSBuild编译完成再继续脚本,在Start-Process中添加-Wait参数。

内容的提问来源于stack exchange,提问作者galsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:02:37