適用環境
本篇文章操作環境 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>
