ASP.NET Core Razor 视图预编译、动态编译

ASP.NET Core 3.X版本:

安装NuGet包

Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages()
        .AddRazorRuntimeCompilation();
}

*.csproj

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

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

通过上述代码我们可以在生产环境中也可以进行动态编译,当然我们可以通过条件来限制.

基于环境和配置模式启用运行时编译:

  1. 根据活动的 Configuration 值,有条件地引用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包:

<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.2" Condition="'$(Configuration)' == 'Debug'" />
  1. 更新项目的 Startup.ConfigureServices 方法以包含对 AddRazorRuntimeCompilation 的调用。有条件地执行 AddRazorRuntimeCompilation,使其仅当 ASPNETCORE_ENVIRONMENT 变量设置为 Development时在调试模式下运行:

public IWebHostEnvironment Env { get; set; }

public void ConfigureServices(IServiceCollection services)
{
    IMvcBuilder builder = services.AddRazorPages();

#if DEBUG
    if (Env.IsDevelopment())
    {
        builder.AddRazorRuntimeCompilation();
    }
#endif
}

Reference

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.1

 
posted @ 2020-03-03 22:05  —八戒—  阅读(439)  评论(0)    收藏  举报