2011-05-24 51 views
0

可能重複:
MSBuild exec task without blocking如何啓動一個程序,但不等待它的MSBuild的退出

在MSBuild的,我需要啓動一個進程(vsperfcmd),而不是等着因爲它會無限期地阻塞,直到從其他地方調用關閉命令爲止。我目前正在與exec任務啓動它:

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

我使用「開始」嘗試,但我得到同樣的阻塞問題

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

奇怪的是,如果在輸入了相同的命令不會阻止命令行。

回答

1

也許你可以嘗試把命令放在DOS批處理文件中,而不是調用批處理文件。不是很優雅,但可能會訣竅。如果這不起作用,則調用一個批處理文件來調用另一個文件來完成這項工作。例如

mycommand1.bat:

mycommand2.bat 

mycommand2.bat:

vsperfcmd /start:coverage /output:test.coverage 

mycommand1將不會等待mycommand2完成,然後繼續(除非你用CALL mycommand2)。

+0

可悲的是,這並不起作用,即使有兩層批處理文件。 – 2011-05-24 16:32:25

+0

您也可以嘗試在c#(或您首選的.NET語言)中創建自定義構建任務(LaunchWithoutWait),該任務只是在不等待的情況下運行該過程。 – 2011-05-24 17:53:11

+0

是的,這是我的下一個計劃 – 2011-05-24 19:35:42

-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選項。

相關問題