MsBuild中Git命令始终在ProjectA仓库执行,无法提交DLL至ProjectB
解决MsBuild中Git命令始终在ProjectA仓库执行的问题
问题核心在于MsBuild的Exec任务是独立进程:你每个<Exec>标签都会启动一个新的shell进程,cd命令只对当前进程生效,进程结束后就回到了MsBuild的默认工作目录(也就是ProjectA仓库),所以后续Git命令还是会在ProjectA里执行。而Git Bash里是在同一个进程中执行所有命令,cd的目录切换效果能持续生效。
给你两个可行的解决办法:
方法1:将所有命令合并到同一个Exec中
用&&把命令串联起来,让它们在同一个shell进程里执行,这样cd的目录切换效果能延续到后续Git命令:
<Exec Command="cd "Path/To/ProjectB" && git reset --hard && git clean -fxd && git branch --set-upstream-to=origin/main main"/>
如果ProjectB的路径包含空格,记得用引号包裹路径。
方法2:给每个Exec指定WorkingDirectory属性
直接在每个Exec任务里通过WorkingDirectory指定ProjectB的仓库路径,无需手动执行cd,每个Git命令都会直接在目标目录运行:
<Exec Command="git reset --hard" WorkingDirectory="Path/To/ProjectB"/> <Exec Command="git clean -fxd" WorkingDirectory="Path/To/ProjectB"/> <Exec Command="git branch --set-upstream-to=origin/main main" WorkingDirectory="Path/To/ProjectB"/>
内容的提问来源于stack exchange,提问作者melom
相关产品推荐
相关产品推荐

