.Net Core 5.0 Razor 预编译,动态编译,混合编译
预编译
预编译是ASP .Net Core的默认方式。在发布时,默认会将系统中的所有Razor视图进行预编译。编译好的视图DLL统一命名为 xxx.PrecompiledViews.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 宿主的运行环境需要重启站点)才会生效。
混合编译
预编译和动态编译都有各自的优点,你可以选择将它们混合起来使用。例如如果你希望在发布时只预编译部分视图,而部分视图要采用动态编译的模式,可以在项目文件上配置排除不需要预编译的视图。例如将Views目录下的全部进行预编译,而主题目录和邮件模板目录下的视图不需要预编译:
<ItemGroup>
<MvcRazorFilesToCompile Include="Views\**\*.cshtml" Exclude="wwwroot\themes\**\*.cshtml;EmailTemplates\**\*.cshtml" />
</ItemGroup>
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 管理员