你如何重新运行dnx。任何文件更改的kestrel命令?

时间:2015-07-10 01:04:22

标签: asp.net-core dnx

如果更改任何文件,我如何执行我的茶隼服务器重启?而不只是停止?

我试过了

dnx --watch . kestrel

但服务器刚停止,我必须手动重新运行命令

我也尝试过使用npm watch命令,但这似乎只是绊倒了

watch 'dnx --watch . kestrel' .

5 个答案:

答案 0 :(得分:5)

您可以使用一个名为dnx-watch的命令。在提出原始问题时它并不存在,但在2015年9月的beta 8中添加。您使用

安装它
dnu commands install Microsoft.Dnx.Watcher

您只需将传递给dnx的命令传递给它即可运行它。所以,替换

dnx web

dnx-watch web

您可以在此处了解详情:http://ardalis.com/get-started-with-dnx-watch

答案 1 :(得分:1)

我发现以下有关使用

中的nodemon的工作

https://github.com/johnpapa/aspnet5-starter-demo#dnxmon

nodemon --ext "cs,json" --exec "dnx . kestrel"

答案 2 :(得分:0)

这是设计的。今天没有开箱即用的解决方案,因为文件监视器停止后自动重启服务器。

Visual Studio有一些特殊的代码可以监视进程并重新启动它。

但是,我们已an issue对此进行跟踪,我们计划在将来的迭代中解决此问题。

答案 3 :(得分:0)

虽然选择的解决方案较短,但我在grunt

驱动的角度应用程序中执行的操作正是如此

该应用程序有一个前端和一个api后端。

首先有一个shell任务用于启动api:

shell: {
  api:{
    options: {
      execOptions : {
        cwd: '..\\$working_directory'
      },
      callback : function (err, stdout, stderr, cb) {
        restartServer('shell:api',err,cb);
      }
    },
    command: function() {
      return 'dnx --watch localfarm';
    }
  },

在我gruntfile的顶部我定义了重启服务器的功能:

var restartServer = function (task, err, cb) {   

var timeoutInSec = 30;
if (err === null)
  timeoutInSec = 2;

grunt.log.write(task + ' Task ended. Retrying in ' + timeoutInSec + ' seconds');

setTimeout(function() {
  grunt.log.write('retrying ' + task );
  grunt.task.run(task);
  cb();
}, timeoutInSec*1000);   };

每次代码中的某些内容发生变化时,dnx --watch进程都会自动终止。 Grunt然后等待2秒钟并重新启动dnx进程。如果dnx失败,则等待30秒直到再次尝试。这让我有时间修复代码。 (在我的代码版本中,我还使用beep在重新加载api时收到通知。)

要运行服务器场(前端和后端),我添加了一个启动多个线程的并发任务:

concurrent: {
...
  farm: {
    tasks: ['shell:api', 'serve'],
    options: { logConcurrentOutput: true, limit: 10 }
  }
...
}

答案 4 :(得分:0)

这个命令在windows上运行得更好(如果你定义了kestrel命令):

nodemon --ext" cs,json" --exec" dnx - watch kestrel"

> Blockquote
C:\Users\name\YoWebApp>**nodemon --ext "cs,json" --exec "dnx . kestrel"**
6 Oct 14:46:13 - [nodemon] 1.7.1
6 Oct 14:46:13 - [nodemon] to restart at any time, enter `rs`
6 Oct 14:46:13 - [nodemon] watching: *.*
6 Oct 14:46:13 - [nodemon] starting `dnx . kestrel`
System.InvalidOperationException: Unable to load application or execute command '.'. Available commands: kestrel, web, ef, mon.
   at Microsoft.Dnx.ApplicationHost.Program.ThrowEntryPointNotfoundException(DefaultHost host, String applicationName, Exception innerException)
   at Microsoft.Dnx.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
   at Microsoft.Dnx.ApplicationHost.Program.Main(String[] args)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider)
   at Microsoft.Dnx.Host.Bootstrapper.RunAsync(List`1 args, IRuntimeEnvironment env, FrameworkName targetFramework)
   at Microsoft.Dnx.Host.RuntimeBootstrapper.ExecuteAsync(String[] args, FrameworkName targetFramework)
   at Microsoft.Dnx.Host.RuntimeBootstrapper.Execute(String[] args, FrameworkName targetFramework)
6 Oct 14:46:14 - [nodemon] app crashed - waiting for file changes before starting...
6 Oct 14:46:44 - [nodemon] restarting due to changes...
6 Oct 14:46:44 - [nodemon] starting `dnx . kestrel`
System.InvalidOperationException: Unable to load application or execute command '.'. Available commands: kestrel, web, ef, mon.
   at Microsoft.Dnx.ApplicationHost.Program.ThrowEntryPointNotfoundException(DefaultHost host, String applicationName, Exception innerException)
   at Microsoft.Dnx.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
   at Microsoft.Dnx.ApplicationHost.Program.Main(String[] args)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider)
   at Microsoft.Dnx.Host.Bootstrapper.RunAsync(List`1 args, IRuntimeEnvironment env, FrameworkName targetFramework)
   at Microsoft.Dnx.Host.RuntimeBootstrapper.ExecuteAsync(String[] args, FrameworkName targetFramework)
   at Microsoft.Dnx.Host.RuntimeBootstrapper.Execute(String[] args, FrameworkName targetFramework)