使用MSBuild/Web部署项目启动程序,无需等待

6

我希望在部署完成后,浏览器能够打开指定的文件夹,我正在尝试使用以下方法:

<Target Name="AfterBuild">
  <Exec Command="..."></Exec>
</Target>

然而,简单的“explorer \somewhere”命令会导致构建过程在资源管理器上阻塞,只有关闭资源管理器后才能完成。即使在其前面加上“start explorer \\somewhere”也不能改变这种情况。
有没有简单的方法来解决这个问题?我们只部署到中间阶段,并希望最后一步手动完成,在相关文件夹上打开资源管理器是一个好处。如果使用VS.NET 2008在Server 2008 Standard上调用BAT文件,则Exec命令实际上会调用该文件。
3个回答

5
我最终做的是拥有一个

元素,并在其中包含其他HTML元素。
<Exec Command="..." Timeout="2000"></Exec>

也就是说,从不同的Exec元素中启动Explorer,然后在此元素上添加一个较短的超时时间。这意味着VS启动Explorer,并在2秒后返回。

1
如果您不想在超时后出现错误,还应将 ContinueOnError="true" 设置为真。 - Lewis Jubb
1
如果在超时时间内未完成,这将终止进程。 - Alex from Jitbit

1
我最终做的是在预构建事件中启动一个PowerShell进程。它执行命令而不会阻塞其余的构建过程。
powershell start-process -workingdirectory "..." "cmd " """/k ..."""

-1
在DOS shell中,您可以使用cmd /c调用另一个进程而不等待其返回。这在作为后构建事件时非常有效。
<Target Name="AfterBuild">
  <Exec Command="cmd /c start explorer"></Exec>
</Target>

1
尝试了CMD /C,似乎没有什么区别。启动cscript并使用WScript.shell的“run”也无法实现。 - Svend
抱歉,没注意到你的回复CptSkippy。无论如何,它可以运行,但没有返回值。也就是说,VS被等待中的浏览器窗口阻塞了。 - Svend
@MyItchyChin 实际上我是在谈论Svend的第一条评论:尽管看起来应该可以,但似乎并没有起作用。我肯定也无法让它起作用! - Keith Pinson
1
@Kazark,温馨提示一下; 最好再努力询问一下为什么答案不起作用......轻柔一些。通常情况下,可能只是需要修复一些小错误,或者出现了一些小的误解之类的问题。答案并不一定需要被删除。 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接