2016-08-25 9 views
3

.NETコアプロジェクトのプリコンパイルスクリプトの一部としてgulp.watchを実行しています。 dotnet runを実行すると、gulp.watch呼び出しがスレッドをブロックしているように見えるので、アプリケーションはまったく起動しません。`gulp.watch`は` dotnet run`の実行をブロックします

gulp.watchにスレッドにハンドルを返すように指示するにはどうすればよいですか?

dotnet newを使用し、gulpからnpmをインストールすることで問題を再現するための最小の実例を作成しました。

この

は私 gulpfile.js次のとおりです。同じよう

using System; 

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

マイproject.jsonファイルが見えます:

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ファイルは次のようになります

{ 
    "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を実行しますdはfoo.txtに変更され、コンソールのイベントハンドラに反映されます。しかしHello World!を印刷する必要がありますMainメソッドが実行されません。

c:\Temp\src\gulptest>dotnet run 
Compiling gulptest for .NETCoreApp,Version=v1.0 
[17:03:48] Using gulpfile c:\Temp\src\gulptest\gulpfile.js 
[17:03:48] Starting 'watch'... 
[17:03:48] Finished 'watch' after 11 ms 
[17:03:48] Starting 'default'... 
[17:03:48] Finished 'default' after 43 ╬╝s 
foo.txt changed! 
[17:04:15] Starting 'copy'... 
[17:04:15] Finished 'copy' after 34 ms 
+0

私も 'gulp-watch'プラグインを使用しようとしましたが、同じように動作します。 – Luca

+0

あなたは最終的に答えを見つけましたか?私はそれを知ることに興味があるだろう。ありがとう –

+0

いいえ残念ながら、誰もこの問題を抱えていないか、別の方法で解決しているようです。私はまた、ギャルのコミュニティ[ここ](https://gitter.im/gulpjs/gulp)と連絡を取ろうとしましたが、運はありません。 – Luca

答えて

0

ASP.NETコアの主な方法は次のようになります -

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

      host.Run(); 

あなたは上記の表示されている1つは、純粋なコンソールアプリケーションで、それには麻薬は必要ありません。

関連する問題