微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net核心 – MVC6是否支持预编译视图?

在< MVC6我可以在发布时预先编译.cshtml文件,以便在请求时不必首先编译它们. 可以在MVC6中预编译.cshtml文件吗?

解决方法

Visual Studio 2017的回答:

从Visual Studio解决方案资源管理器编辑您的项目.csproj,并添加MvcRazorCompileOnPublish和PreserveCompilationContext属性,其值为true,如果它不存在

<PropertyGroup>
      <TargetFramework>netcoreapp1.1</TargetFramework>
      ....
      <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
      <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>

通过nuget将包Microsoft.AspNetCore.Mvc.Razor.ViewCompilation添加到您的项目中或编辑.csproj

<ItemGroup>
     ...
    <packagereference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" />
</ItemGroup>

**以下答案仅适用于ASP.NET Core RC1. **

您可以创建一个继承自RazorPreCompileModule的类,并覆盖EnablePreCompilation方法将剃刀预编译设置为true.

using Microsoft.AspNet.Mvc.Razor.Precompilation;
using Microsoft.Dnx.Compilation.CSharp;

namespace PrecompilationWebSite
{
    public class RazorPreCompilation : RazorPreCompileModule
    {
        protected override bool EnablePreCompilation(BeforeCompileContext   context) => true;
    } 
}

在Startup.cs中引用这个方法

public class Startup
{
    // Set up application services
    public void ConfigureServices(IServiceCollection services)
    {
        // Add MVC services to the services container
        services
            .AddMvc()
            .AddprecompiledRazorViews(GetType().GetTypeInfo().Assembly);
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseCultureReplacer();

        app.UseMvcWithDefaultRoute();
    }
}

您可以在整个项目的asp.net github页面上查看预编译示例project.

您也可以在发布时编译整个应用程序.

这将发布编译为nuget包的整个应用程序.

原文地址:https://www.jb51.cc/aspnet/249828.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐