Asp.net core MVC6是否支持预编译视图?

Asp.net core MVC6是否支持预编译视图?,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,在


是否可以在MVC6中预编译.cshtml文件?

Visual Studio 2017的答案:

从Visual Studio解决方案资源管理器编辑您的project.csproj,并添加
MvcRazorCompileOnPublish
PreserveComilationContext
属性,如果该属性尚未存在,则将其值设置为true

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

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

您可以创建一个继承自
RazorPreCompileModule
的类,并重写
enableprocomplation
方法以将razor预编译设置为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页面上查看整个项目的预编译示例

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

它将把整个应用程序编译成一个nuget软件包发布。

csproj(VS 2017)答案 添加对Microsoft.AspNetCore.Mvc.Razor.viewcomilation的引用:

<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
</ItemGroup>
  • Tools
    部分下添加对
    Microsoft.AspNetCore.Mvc.Razor.viewcomilation.Tools
    的引用,如下所示:
  • “Microsoft.AspNetCore.Mvc.Razor.viewcomilation.Tools”:“1.1.0-preview4-final”,
  • 添加发布后脚本以调用视图编译器:
  • “脚本”:{ “后发布”:“dotnet razor预编译--配置%publish:configuration%--框架%publish:TargetFramework%--输出路径%publish:OutputPath%%发布:项目路径%” }
    最后,从ASP.NET Core 1.1开始支持Razor视图预编译

    公告如下:

    它说:

    视图的Razor语法提供了灵活的开发体验 其中,当 视图被执行。但是,在某些情况下,您可以这样做 不希望在运行时编译Razor语法。现在可以编译 Razor查看应用程序引用的视图,并使用 应用在发布过程中启用视图编译的步骤 申请书

  • 添加对的引用 “Microsoft.AspNetCore.Mvc.Razor.viewcomilation.Design”下的 “依赖项”部分
  • 添加对的引用 工具下的“Microsoft.AspNetCore.Mvc.Razor.viewcomilation.Tools” 部分
  • 添加发布后脚本以调用视图编译器:

  • 我现在尝试使用一个新的ASP.NET 5 MVC 6应用程序,目标是DNX Core 5.0,我得到的错误是
    GetType().GetTypeInfo()
    不存在,但也
    GetType().Assembly
    也失败了(但编辑器可以工作-显然,
    Assembly
    属性不在DNX Core中)。只有一些链接:,以及一条解释这一点的注释。
    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
    </ItemGroup>
    
    <PropertyGroup>
        <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
    </PropertyGroup>
    
    "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": { "type": "build", "version": "1.1.0-preview4-final" } "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": "1.1.0-preview4-final", "scripts": { "postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%" }
    "scripts": {
       "postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%"
    }