本人有编译某个项目后,将编译生成文件复制到某个路径并运行的需求,写了简易bat,记录备忘
tasklist|find /i "abc.exe"
if errorlevel 0 (
taskkill /im abc.exe
)
%MSBUILD% D:\xxxx\xxxx.sln -target:AB\CD\xxxx_xxxx:Rebuild /p:Configuration=Release
if exist E:\xxxx\xxxx.dll (
del E:\xxxx\xxxx.dll
)
copy "D:\xxxx\xxxx.dll" "E:\xxxx\"
tasklist|find /i "abc.exe"
if errorlevel neq 0 (
start "" "E:\xxxx\abc.exe"
)
1、MSBUILD 为 C盘MSBUILD.exe路径的环境变量
2、AB\CD\xxxx_xxxx中,AB\CD为xxxx_xxxx项目在sln中的路径,_为非法字符的替换
3、tasklist|find 查找进程是否存在,返回结果为0时存在
4、start 后的 "" 使exe不按命令行运行,可直接启动
注意:如果MSBuild编译失败,依旧会复制dll并运行,可能会出现使用旧dll或报错的情况。