【问题标题】:How do I start a background task from a VisualStudio post-build event?如何从 Visual Studio 生成后事件启动后台任务?
【发布时间】:2013-08-27 18:24:55
【问题描述】:

每当从 VisualStudio 运行特定项目时,我都会尝试启动 grunt watch 的实例。我有一个用 ember 编写的单页应用程序,并用 grunt 编译,它连接到用 WebAPI 编写的后端。我正在尝试减少摩擦,以便可以在 VS 中启动调试 (F5) 并让它一切正常。

如果我添加一个构建后事件来使用 grunt 编译应用程序,它可以正常工作:

node node_modules\grunt-cli\bin\grunt dev --no-color

grunt watch 永远不会终止,因此 VisualStudio 构建似乎会挂起,直到您终止 node.exe 进程(这通常是预期的,除了无法在 VS 中使用 Ctrl+Break 停止):

node ../node_modules\grunt-cli\bin\grunt watch --no-color

我已经尝试从 start 命令开始,但 VisualStudio 仍在等待它退出(只是说“构建开始...”):

start node ../node_modules\grunt-cli\bin\grunt dev --no-color

我也尝试过使用 start 的 /i 参数,但这无济于事。它会打开一个运行 grunt watch 的新窗口,但在我关闭控制台窗口之前,构建不会继续(并且应用程序不会启动)。

大概这与作为构建过程的子进程有关吗?有没有一种无需 VisualStudio 等待就可以启动后台任务的实际方法?

【问题讨论】:

    标签: visual-studio-2010 msbuild background-process post-build-event


    【解决方案1】:

    不确定为什么完全 start 不起作用(从命令行完美运行),但 afaik msbuild 为其构建事件生成了一个单独的 cmd 进程,因此它与此有关。

    一种可行的替代方法是使用 Powershell 来启动该过程。不知道内置的 powershell 语法,但调用 C# 的 Process.Start 也可以正常工作:

    powershell -Command "[System.Diagnostics.Process]::Start( '/path/to/node', 'args' )"
    

    这回答了你的问题,但我认为这不是你真正想要的,而且你问错了问题。你说你想'在特定项目运行时启动一个实例来自 VisualStudio',但随后您继续询问项目构建时发生的构建事件构建。这是不同的,而且看起来很不方便,因为每个构建都会启动一个新实例。相反,我认为您真正想要/需要的是在每次开始调试项目时启动一个实例。这也是可能的here:

    • 向您的解决方案添加一个空项目
    • 在项目的Properties->Debugging 下输入你的节点命令
    • 右键解决方案,选择Set Startup Project
    • 选择Multiple startup projects
    • Action 设置为 Start 用于您的主项目
    • 为空项目将Action 设置为Start without debugging

    现在按 F5,VS 将启动节点,并开始调试您的项目。

    【讨论】:

    • 您能否详细说明“在项目properties->Debugging 下输入您的节点命令”是什么意思?
    • @JaredBeach 启动节点的命令,就像问题中一样,类似于node ../node_modules\grunt-cli\bin\grunt watch --no-color
    • 有没有办法在停止调试时关闭它?在“启动外部程序”下,我有“C:\Windows\System32\java.exe”,在命令行参数下,我有“-jar fakeSMTP-2.0.jar -s”。但当我停止调试时它不会关闭
    • 没关系。我从控制台应用程序项目切换到 winform 并修复它....不知道为什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多