gpt4 book ai didi

visual-studio-2010 - 如何从 Visual Studio 生成后事件启动后台任务?

转载 作者:行者123 更新时间:2023-12-04 14:59:51 25 4
gpt4 key购买 nike

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

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

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

我试过从 start 开始命令,但 VisualStudio 仍在等待它退出(只是说“构建开始...”):
start node ../node_modules\grunt-cli\bin\grunt dev --no-color

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

enter image description here

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

最佳答案

不知道为什么确切的 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
  • 套装ActionStart用于您的主要项目
  • 套装ActionStart without debugging用于空项目

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

    关于visual-studio-2010 - 如何从 Visual Studio 生成后事件启动后台任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472834/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com