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

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 &quot;Path/To/ProjectB&quot; && 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:42:03