如何启动程序但不等待它在msbuild中退出

时间:2011-05-24 16:01:27

标签: visual-studio-2010 msbuild code-coverage

  

可能重复:
  MSBuild exec task without blocking

在MSBuild中,我需要启动一个进程(vsperfcmd),但不要等待它完成,因为它会无限期地阻塞,直到从其他地方调用shutdown命令。我目前正在使用exec任务启动它:

<exec command="vsperfcmd /start:coverage /output:test.coverage" />

我尝试使用“开始”,但我遇到了相同的阻止问题

<exec command="start vsperfcmd /start:coverage /output:test.coverage" />

奇怪的是,如果在命令行输入,则相同的命令不会阻止。

2 个答案:

答案 0 :(得分:1)

也许您可以尝试将命令放在DOS批处理文件中并调用批处理文件。不是很优雅,但可能会做到这一点。如果这不起作用,则调用批处理文件,该文件调用另一个文件来完成工作。例如

mycommand1.bat:

mycommand2.bat

mycommand2.bat:

vsperfcmd /start:coverage /output:test.coverage

mycommand1在继续之前不会等待mycommand2完成(除非您使用了CALL mycommand2)。

答案 1 :(得分:-1)

在你的exec任务中尝试这样的事情,它运行资源管理器,然后立即返回,

<Target Name="Build">
  <Message Text="Before" />
  <Exec Command="start $(COMSPEC) /k &quot;$(WINDIR)\explorer.exe &amp; exit&quot;" />
  <Message Text="After" />
</Target>

由于您正在执行的命令具有参数,您可能需要尝试将该命令正确地用引号括起来。看一下“help cmd”/ S选项。