`gulp.watch`阻止执行`dotnet run`

时间:2016-08-25 15:16:04

标签: c# npm gulp .net-core

我正在执行gulp.watch作为.NET Core项目中预编译脚本的一部分。执行dotnet run时,gulp.watch调用似乎会阻止该线程,因此应用程序根本不会启动。

如何告诉gulp.watch将句柄返回给线程?

我创建了一个最小工作示例,使用dotnet new重现问题并通过gulp安装npm

这是我的gulpfile.js

var gulp = require('gulp');

gulp.task('copy', () => {
    gulp.src("watch_src/foo.txt")
      .pipe(gulp.dest("watch_dst/"));
});

gulp.task('watch', () => {
    var watcher = gulp.watch("watch_src/foo.txt", ['copy']);
    watcher.on('change', function(){
        console.log('foo.txt changed!');
    });
});

gulp.task('default', ['watch']);

我的Program.cs文件如下:

using System;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

我的project.json文件如下:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      },
      "imports": "dnxcore50"
    }
  },
  "scripts": {
    "precompile": "gulp"
  }
}

执行dotnet run将执行预编译脚本,对foo.txt的更改将由控制台上的事件处理程序反映出来。但是应该打印Main的{​​{1}}方法无法执行:

Hello World!

2 个答案:

答案 0 :(得分:0)

ASP.NET核心中的主要方法应该看起来像 -

            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();

上面显示的是纯控制台应用程序,并不需要gulp。

答案 1 :(得分:0)

我正在使用vs代码,我也遇到了这个问题

project.json 中,您具有以下部分:

"scripts": {
    "precompile": "gulp"
  }

这将卡住 dotnet run

执行以下步骤如果要启动 dotnet run gulp watch

第一步:在 task.json 文件中定义新任务:

 {
            "type": "shell",
            "command": "gulp watch",
            "problemMatcher": [],
            "label": "gulp-watch"
 }

第二步:在 launch.json 中添加新的启动配置:

  {

            "name": "gulp-watch",
            "preLaunchTask": "gulp-watch",
            "request": "launch",
            "type": "node"
  },

第3步:在 launch.json 中添加复合配置:

 "compounds": [{
        "name": ".Net+gulp",
        "configurations": [
            "gulp-watch",
            ".NET Core Launch (web)"
        ]
    }],

有关更多详细信息,请参考此链接https://code.visualstudio.com/docs/editor/debugging