在 ASP.NET vNext 中,为啥没有即时重新编译代码?

Posted

技术标签:

【中文标题】在 ASP.NET vNext 中,为啥没有即时重新编译代码?【英文标题】:In ASP.NET vNext, why is code not recompiled on the fly?在 ASP.NET vNext 中,为什么没有即时重新编译代码? 【发布时间】:2014-12-10 10:15:44 【问题描述】:

我正在使用 k web 从命令行运行 HelloMvc 示例应用程序。我尝试使用 kvm use -runtime 使用我可用的不同环境来运行它。当我更改控制器并在浏览器中按 F5(或 Ctrl+F5)时,代码不会自动重新编译,页面也不会更改。我做错了什么?

    Active Version      Runtime Architecture                         
------ -------      ------- ------------ 
       1.0.0-alpha3 svr50   x86          
       1.0.0-alpha3 svrc50  x86          
       1.0.0-alpha4 CLR     x86          
  *    1.0.0-alpha4 CoreCLR x86

【问题讨论】:

@Patrick Hofman 多么感谢您和不再允许个人接触? ;) 没有。而且从来没有。请参阅meta.stackexchange.com/questions/5029/… 例如:“请不要在您的帖子中使用签名或标语”。 触摸。你必须无情!干得好。 没问题。只是试图让网站保持清晰和重点。 【参考方案1】:

从命令行运行dnx web 只会启动您的主机。为了获得自动重新编译的好处,需要观察文件的更改并在检测到任何更改时重新启动主机。要完成此操作,请使用--watch 标志并像这样运行您的网络命令:

dnx --watch web

目前这只是在检测到更改时关闭您的主机,因此您需要在发生更改时重新启动它。如果您从 Visual Studio 14 运行项目,IISExpress 会为您执行此操作。

在 Visual Studio 之外执行此工作流的最佳选择是通过 javascript 构建工具或 npm 脚本。如果您想在 VS14 之外工作时连续重新编译文件更改,我建议您查看this gulp-aspnet-k plugin(请注意,此插件目前仅适用于 Windows)。似乎是在没有我发现的 IISExpress 的情况下实现这一目标的最佳方法。这个插件是/是特定于 Windows 的,但是查看代码应该可以帮助您入门。 :)

Glenn F. Henriksen 为 nodemon 编写了一个非常好的包装器,称为 kmon。也试试看。 The kmon GitHub repository has all the instructions you need

【讨论】:

我无法在 mac OS X 中运行它?【参考方案2】:

基于gulp plugin linked to by AndersNS,有一点powershell可以用来自动重启应用:

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "for(;;)  Write-Output \"Starting...\"; k --watch web "

如果您将其粘贴到批处理文件中(例如run.cmd),您可以轻松启动应用程序,使其保持运行,并在文件更改时自动重新启动和重建。

如果您想使用除web 之外的其他目标,请确保调整 k 命令行。

【讨论】:

以上是关于在 ASP.NET vNext 中,为啥没有即时重新编译代码?的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 5/vnext 上的磁盘上没有 dll 的代码合同

依赖注入。为 ASP.NET vNext 做准备

ASP.NET 5 - 启动 ASP.NET vNext 项目

结合CLR类库发布ASP.NET vNext/DNX

如何在 ASP.NET 5 MVC 6 (vNext) 中定义 Identity 的密码规则?

身份验证类型名称如何在 asp.net vnext 中注册