如何编写Bat脚本在Visual Studio命令行调试模式下并行启动多项目
实现多组件并发调试启动的Bat脚本方案
需求说明
我们的项目包含三个部分:基于npm的Frontend、Backend服务,以及一个包含多个可执行文件的Program解决方案。手动逐个启动过于繁琐,需要编写Bat脚本实现:
- 在调试模式下构建并运行Backend和Program解决方案(该解决方案已配置为启动时自动加载所有所需项目)
- 让Program解决方案、Backend解决方案、Frontend三者并发启动,无需等待前一个启动完成再执行下一个
尝试过的无效方案
- 使用devenv的
/run开关:仅能构建运行程序,无法进入调试模式 - 查阅devenv帮助文档(
devenv /?):未找到支持调试启动的合适参数 - 尝试
/build搭配/debugexe:需逐个处理可执行文件,无法在一个调试会话中运行解决方案内的所有项目 - 搜索相关问题:未找到匹配场景的解决方案
现有脚本
@echo off set "VS_PATH=C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe" set "PROGRAM_FOLDER=C:\Dev\Repos\Program" set "PROGRAM_SOLUTION=Program.sln" set "BACKEND_FOLDER=C:\Dev\Repos\web-backend" set "BACKEND_SOLUTION=Web-Backend.sln" set "FRONTEND_FOLDER=C:\Dev\Repos\web-frontend" @REM EXECUTION /////////////////////////////////////////////////////////////////// @REM Programs echo Opening Programs solution folder cd /d "%PROGRAM_FOLDER%" echo Build and run solution "%VS_PATH%" /run "%PROGRAM_SOLUTION%" @REM Backend echo Opening Backend solution folder cd /d "%BACKEND_FOLDER%" echo Build and run solution "%VS_PATH%" /run "%BACKEND_SOLUTION%" @REM Frontend echo Opening Frontend folder cd /d "%FRONTEND_FOLDER%" echo Starting frontend npm start
修正后的解决方案脚本
核心修改点:
- 使用
start命令实现并发启动,避免脚本阻塞等待 - 将devenv的
/run替换为/rundebug,启用调试模式启动解决方案 - Frontend部分新开命令行窗口运行npm,避免输出混淆
@echo off set "VS_PATH=C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe" set "PROGRAM_FOLDER=C:\Dev\Repos\Program" set "PROGRAM_SOLUTION=Program.sln" set "BACKEND_FOLDER=C:\Dev\Repos\web-backend" set "BACKEND_SOLUTION=Web-Backend.sln" set "FRONTEND_FOLDER=C:\Dev\Repos\web-frontend" @REM 并发启动所有组件 echo 启动Program解决方案(调试模式) start "" /D "%PROGRAM_FOLDER%" "%VS_PATH%" /rundebug "%PROGRAM_SOLUTION%" echo 启动Backend解决方案(调试模式) start "" /D "%BACKEND_FOLDER%" "%VS_PATH%" /rundebug "%BACKEND_SOLUTION%" echo 启动Frontend服务 start "" /D "%FRONTEND_FOLDER%" cmd /k "npm start" echo 所有组件已启动,请查看对应窗口状态
脚本说明
start "":start命令的第一个参数是窗口标题,留空使用默认标题/D <路径>:指定启动程序的工作目录,避免切换目录影响后续命令/rundebug:devenv的调试启动参数,会自动构建解决方案并以调试模式启动所有已配置的启动项目cmd /k "npm start":新开命令行窗口运行npm start,/k保证窗口运行后不自动关闭,方便查看日志
内容的提问来源于stack exchange,提问作者66Gramms
相关产品推荐
相关产品推荐

