在MSBuild中,我需要启动一个进程(vsperfcmd),但不要等待它完成,因为它会无限期地阻塞,直到从其他地方调用shutdown命令。我目前正在使用exec
任务启动它:
<exec command="vsperfcmd /start:coverage /output:test.coverage" />
我尝试使用“开始”,但我遇到了相同的阻止问题
<exec command="start vsperfcmd /start:coverage /output:test.coverage" />
奇怪的是,如果在命令行输入,则相同的命令不会阻止。
答案 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 "$(WINDIR)\explorer.exe & exit"" />
<Message Text="After" />
</Target>
由于您正在执行的命令具有参数,您可能需要尝试将该命令正确地用引号括起来。看一下“help cmd”/ S选项。