zoukankan      html  css  js  c++  java
  • .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	hemes***.cshtml;EmailTemplates***.cshtml" />
    </ItemGroup>
    

      

    进阶

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

    原文地址:http://www.zkea.net/codesnippet/detail/razor-compilation.html

  • 相关阅读:
    MySQL 大表优化方案
    mysql千万级大数据SQL查询优化
    mysql binlog格式
    MySQL误操作后如何快速恢复数据
    mysql数据库优化
    查看MYSQL数据库中所有用户及拥有权限
    MySQL如何优化
    MySQL 开发实践
    show slave各项参数解释
    MYSQL主从数据库搭建
  • 原文地址:https://www.cnblogs.com/seriawei/p/razor-complation.html
Copyright © 2011-2022 走看看