.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