AspNet Core 3.0 和 3.1:启用 Razor 页面的运行时编译



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

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

B(看起来编辑并继续不起作用。

IDE和版本:Microsoft Visual Studio 2019

对于此问题,我建议您尝试安装软件包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,然后在Startup.cs中配置AddRazorRuntimeCompilation,例如

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

对于此问题,可以通过对 Razor 视图和 Razor 页面的运行时编译的重大更改来跟踪 #343

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

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

注意 如 Givi 发布的"ASP.NET Core 中的 Razor 文件编译"中所述,如果您只想快速开发此功能,您可以启用此功能仅用于开发而不是生产

,无需添加
.AddRazorRuntimeCompilation()

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

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

仅适用于我们的集成开发环境(通过 DevOps 部署的开发应用服务器(和使用

"ASPNETCORE_ENVIRONMENT" = "Local"

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

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

但我发现的一件事是,尽管我ASPNETCORE_HOSTINGSTARTUPASSEMBLIES添加到launchSettings.json,但它被项目属性调试选项卡删除(因此不起作用(,直到我在那里添加变量(现在它工作得很好(。

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

相关内容

  • 没有找到相关文章

最新更新