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包的整个应用程序.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....