.Net Core 5.0 Razor 预编译,动态编译,混合编译


适用环境

本篇文章操作环境 Visual Studio 2019 + ASP.Net Core Web 应用 + .NET 5.0

 

预编译

预编译是ASP.Net Core 5.0 的默认方式。在发布时,默认会将系统中的所有Razor视图进行预编译。编译好的视图DLL统一命名为 xxx.Views.dll

 

动态编译

将项目整个配置成动态编译很简单,仅需3步:

1、在 NuGet 中添加包“Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

2、修改代码文件“Startup.cs”中的方法“ ConfigureServices ”,调用方法“ AddRazorRuntimeCompilation ”以支持动态编译 .cshtml 文件

services.AddRazorPages().AddRazorRuntimeCompilation();

 3、修改项目文件 xxx.csproj,添加配置项 RazorCompileOnBuild 和 MvcRazorCompileOnPublish ,值都设置为 false。

 

<PropertyGroup>
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>

 

这样在发布的时候,所有的 Razor 视图都不会被预编译了,并且所有的视图都会一同被发布。

注意:在发布的生产环境中,修改视图文件是不会立即生效的,需要重启程序(对于 IIS 宿主的运行环境需要重启站点)才会生效。 

 

混合编译

预编译和动态编译都有各自的优点,你可以选择将它们混合起来使用。例如如果你希望在发布时只预编译部分视图,而部分视图要采用动态编译的模式,可以在项目文件上配置排除不需要预编译的视图。其他步骤与前一章节“动态编译”相同,仅步骤3需要按照下面的方式修改,多个项目之间使用分号“;”分隔。例如:

  <ItemGroup>
    <MvcRazorFilesToCompile Include="Pages\**\*.cshtml" Exclude="Pages\page_group1\**\*.cshtml;Pages\page_group2\pg1.cshtml" />
  </ItemGroup>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM