MSBuild永远不会结束

时间:2010-05-15 12:25:14

标签: c# msbuild ant

<Target Name="RunWebServer">
<Exec Command='$(WebServer) /port:3811 /path:$(Path)' />        
</Target>

上述命令实际上转换为下面给出的命令:

"C:\Program Files (x86)\Common Files\microsoft shared\DevServer\9.0"\WebDev.WebServer /port:3811 /path:"D:\PROJEKTI\eMedicine\eMedicine\eMedicine"

但是当我启动build.xml

D:\PROJEKTI\eMedicine\eMedicine>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MsBuild.exe Build.xml /target:RunWebServer
Microsoft (R) Build Engine Version 3.5.30729.4926
[Microsoft .NET Framework, Version 2.0.50727.4927]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 15.5.2010 14:06:36.

脚本永远不会结束。如何运行它然后自动停止它,从而为下一个任务做好准备?

2 个答案:

答案 0 :(得分:1)

您需要稍微改变一下,不要等待Web服务器死掉,就像这样

<Exec Command='start /B $(WebServer) /port:3811 /path:$(Path)' />   

我不确定你为什么要在构建过程中启动Web服务器,但默认行为是MSBuild等待WebDev.WebServer.exe退出/关闭。您可以详细了解START的工作原理herehere。它基本上把它作为一个单独的过程开始,而不是它等待的过程。

答案 1 :(得分:1)

请查看AsyncExec,

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

它应该可以解决这个问题。