是否可以使用进程内 aspnet core 3 进行实时重新加载?

Posted

技术标签:

【中文标题】是否可以使用进程内 aspnet core 3 进行实时重新加载?【英文标题】:Is live reload with in-process aspnet core 3 possible? 【发布时间】:2019-10-02 14:35:25 【问题描述】:

我最近将 .Net Framwork AspNet MVC 应用程序升级为 AspNet Core 3 MVC 应用程序,我希望能够更改视图、保存和刷新我的浏览器窗口以查看更改。现在看来我必须每次都进行构建才能看到任何更改。有没有办法改变这种行为?

这是在 IIS 10 下托管的

【问题讨论】:

【参考方案1】:

据我所知,运行时编译只能在开发环境中工作。这意味着您不能在生产环境(托管在 IIS 上)中使用它。

如果将 Visual Studio 的调试环境更改为 IIS,它仍然可以工作。

此外,RuntimeCompilation 不是 asp.net core 3.0 中的内置功能。

如果你想使用的话,我建议你可以尝试安装包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,然后在Startup.cs中配置AddRazorRuntimeCompilation就像

public void ConfigureServices(IServiceCollection services)

    services.AddControllersWithViews().AddRazorRuntimeCompilation();

【讨论】:

就是这样!谢谢白兰度! 也适用于 MVC。 按预期工作。谢谢 就像一个魅力,谢谢! 重要注意事项...当我使用 IIS 热重载时,我必须在热重载后手动刷新浏览器,此时 IIS Express 会自动刷新。【参考方案2】:

3.1 有一种新的方法,取自:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.1

在 csproj 中添加包

<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.3" />

然后在launch.json处,添加一个新的环境变量

"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"

【讨论】:

【参考方案3】:

我很高兴按照this blog post. 实现Westwind.AspnetCore.LiveReload,它非常简单,而且比 BrowserSync 工作得更好。

【讨论】:

是的,终于有一个简单易用的东西了!您应该在答案中添加主要步骤,以防链接断开 我添加了一个指向实际包的链接。如果它下降了,那么我们可能无论如何都不应该使用它。

以上是关于是否可以使用进程内 aspnet core 3 进行实时重新加载?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 3.1 - HTTP 错误 500.30 - ANCM 进程内启动失败

Net Core 3.0 及 AspNet 3.0

Aspnet Core 3.1 Identity ConfirmEmail 未按预期工作

来自 JQuery 和控制器的 ASPNET Core MVC 部分视图

Swashbuckle.AspNet.Core:Swagger UI 显示空白页面 - 如何修复?

进程内和进程外托管的 ASP .NET Core 3 + Identity Server 问题