【问题标题】:AspNet Core 3.0 and 3.1 : Enable runtime compilation for Razor PagesAspNet Core 3.0 和 3.1:启用 Razor 页面的运行时编译
【发布时间】:2020-01-30 02:23:42
【问题描述】:

自 ASP.Net Core 3.0 及更高版本:

A) 在运行应用程序时编辑 Razor 视图 (.cshtml) 文件不会应用更改,直到重新启动。

B) 编辑和继续似乎不起作用。

IDE 和版本: 微软 Visual Studio 2019

【问题讨论】:

    标签: asp.net-mvc asp.net-core visual-studio-2019


    【解决方案1】:

    对于这个问题,我建议你尝试安装包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 然后在Startup.cs 中配置AddRazorRuntimeCompilation

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews().AddRazorRuntimeCompilation();
    }
    

    对于这个问题,您可以通过Breaking changes to runtime compilation for Razor views and Razor Pages #343追踪

    【讨论】:

    • 感谢您的快速回复。通过添加 Mvc.Razor.RuntimeCompilation 服务解决了 cshtml 页面更新问题。仍在寻找第一个问题的解决方案。
    • 图,另一个曾经“正常工作”的东西现在是我们必须安装的另一个包。
    • 现在,此更改也已记录在案。 Razor file compilation in ASP.NET Core
    • 我在尝试安装 Razor 运行时包时遇到错误。包 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 5.0.0 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。包裹。有人遇到过吗?
    • @Sajithd 你可以安装3.1.10版
    【解决方案2】:

    请使用 NuGet 包 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 版本 3.1.7ASP.Net Core 3.1 兼容并在 Startup.cs 中应用以下代码行

     public void ConfigureServices(IServiceCollection services)
        {
          services.AddControllersWithViews();            
          services.AddControllersWithViews().AddRazorRuntimeCompilation();    
        }
    

    【讨论】:

      【解决方案3】:

      请注意,如 Givi 发布的 "Razor file compilation in ASP.NET Core" 中所示,如果您只希望此功能用于快速开发,您可以将其仅用于开发而不是用于生产通过不添加

      .AddRazorRuntimeCompilation()
      

      到 Startup.cs,而是将这些环境变量添加到您的 launchSettings.json

      "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      "ASPNETCORE_ENVIRONMENT" = "Development"
      

      只针对我们的集成开发环境(通过DevOps部署的Dev appserver)和使用

      "ASPNETCORE_ENVIRONMENT" = "Local"
      

      用于个人开发者的本地开发(在随附的 appsettings.Local.json 配置文件中)。

      我很高兴地报告"ASPNETCORE_ENVIRONMENT" 并不需要严格设置为"Development",并且运行时编译适用于"Local"(大概是您用于开发环境的名称)。

      但我发现的一件事是,虽然我将 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 添加到 launchSettings.json,但它已被项目属性“调试”选项卡删除(因此无法正常工作),直到我在那里添加了变量(现在它工作得很好) .

      【讨论】:

        【解决方案4】:

        我正在开发一个 asp.net core 3.1 项目,该项目以某种方式模块化,每个模块都有自己的控制器和视图。位于解决方案根文件夹中的文件夹中的模块。在这种情况下,仅添加AddRazorRuntimeCompilation 方法对我没有帮助,我必须配置FileProviders。只是想注意对我来说正确的配置是将每个模块文件夹路径,实际上是其中包含.csproj 文件的文件夹,添加到FileProviders,对于像我这样浪费大量时间来配置的人。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-11-07
          • 2020-05-06
          • 2020-02-19
          • 2020-07-09
          • 1970-01-01
          • 2021-04-08
          • 2020-09-28
          相关资源
          最近更新 更多