【问题标题】:TFS Auto Build hangs waiting for termination of BAT fileTFS Auto Build 挂起,等待 BAT 文件终止
【发布时间】:2014-03-04 15:12:42
【问题描述】:

我有一个 TFS 构建定义。

在工作流程中,我需要调出一个控制台监听器,并在这个监听器上运行一些测试。

所以我创建了一个 BAT 文件,内容如下:

start cmd /k "d:\abc.exe"

如果我运行这个 BAT 文件,BAT 本身将终止,但它会生成另一个 cmd Windows,运行侦听器。所以一切都很好。

但是当这被合并到 TFS 构建定义中时,工作流会等待这个过程的完成,整个流程就会挂起。

我已尝试使用 START 和 CMD 的各种开关,以便工作流程可以在侦听器运行的情况下继续,但无济于事。

【问题讨论】:

    标签: batch-file tfs cmd build-definition


    【解决方案1】:
    start "" cmd /c "d:\abc.exe"
    

    在 cmd 中,/k 表示启动一个新实例,执行指示的命令并保持窗口打开。 /c 意思是一样的,但是当命令结束时,cmd 退出。

    【讨论】:

    • 是一样的。进程 abc.exe 已启动,但 TFS 工作流程同样挂起。在工作流程可以继续之前,这个过程需要完成。但如果此过程完成,则意味着侦听器不再运行。我正在寻找一种方法来保持这个过程运行,同时工作流程运行它自己的过程。
    • @Dunnomuch,我有一个疑问。您的工作流程启动一个批处理文件,该批处理文件生成一个新的 cmd 副本,在该 cmd 副本中启动 abc.exe。发生这种情况时,批处理文件在执行 start 命令后已结束其工作并关闭。你是如何定义测试的?它在等待什么结束?
    • 是的。显然,如果您在工作流程中启动 BAT 文件,并且该 BAT 文件运行 START / CMD,则工作流程将等待所有 START / CMD 调用完成,然后再继续。我实际上是通过让 BAT 文件调用另一个 EXE 来解决它,而这个 EXE 将异步调用侦听器。这样,侦听器将处于活动状态,并且工作流程会照常进行。感谢您的回复!
    猜你喜欢
    • 2011-11-15
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2016-09-23
    相关资源
    最近更新 更多