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


预编译

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

动态编译

将项目整个配置成动态编译很简单,添加一个配置项目MvcRazorCompileOnPublish,值为false即可

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

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

注意:在ASP .Net 2.2以后,仅在开发环境下,修改视图可时时生效。发布以后产线环境修改视图是不会立即生效的,要重启程序才会生效。详细可参阅:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-2.2

如果希望在产线环境也可以修改视图时时生效,需要主动设置RazorViewEngineOptions.AllowRecompilingViewsOnFileChange的值为true

public class RazorViewEngineOptionsSetup : ConfigureOptions<RazorViewEngineOptions>
{
    public RazorViewEngineOptionsSetup(IHostingEnvironment hostingEnvironment, IPluginLoader loader) :
        base(options =>
        {
            options.AllowRecompilingViewsOnFileChange = true;
        })
    {
    }
}

然后添加到容器中:

services.TryAddEnumerable(ServiceDescriptor.Singleton<IConfigureOptions<RazorViewEngineOptions>, RazorViewEngineOptionsSetup>());

混合编译

预编译和动态编译都有各自的优点,你可以选择将它们混合起来使用。例如如果你希望在发布时只预编译部分视图,而部分视图要采用动态编译的模式,可以在项目文件上配置排除不需要预编译的视图。例如将Views目录下的全部进行预编译,而主题目录和邮件模板目录下的视图不需要预编译:

<ItemGroup>
  <MvcRazorFilesToCompile Include="Views\**\*.cshtml" Exclude="wwwroot\themes\**\*.cshtml;EmailTemplates\**\*.cshtml" />
</ItemGroup>

进阶

关于更多Razor的配置,可以参阅微软的官方说明文档:https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-2.2

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:less里面calc() 语法使用
下一篇:.Net Core 5.0 Razor 预编译,动态编译,混合编译
评论列表

发表评论

评论内容
昵称:
关联文章

.Net Core Razor 编译动态编译混合编译
.Net Core 5.0 Razor 编译动态编译混合编译
【推荐】Razor文件编译 ASP.NET Core
在cshtml文件中使用编译语法
.NETCore动态解析Razor代码cshtml代码解析RazorEngine.NetCore
asp.net core mvc修改cshtml试图热加载动态更新
.NET Core 实现动态代理做AOP(面向切面编程)
.NET Core 利用委托实现动态流程组装
.NET DLL反编译 JustDecompile
ASP.NET Core官网教程,资料查找
.net Core编译出现错误:指定的任务可执行文件“sgen.exe”未能运行,文件名或扩展名太长
.NET DLL反编译 dnSpy
.NET DLL反编译 .NET Reflector
.NET Core ResponseCache 浏览器缓存
如何在 .NET 8 服务中指定端口号启动:最佳实践与动态配置
解决.Net Core3.0 修改cshtml代码之后必须重新生成才可以看到效果
企业项目实战.Net Core +FastReport教程一|制作报表模板
.NET Core,.NET5 固定输出目录,不要版本目录
.net-winform多平台编译设置 csproj配置
asp.net - 在 ASP.NET Core MVC 中嵌套 TagHelper

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码