Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does MVC6 support Precompiled Views?

In < MVC6 I could have .cshtml files pre-compiled on publish, so that they didn't have to be compiled on first hit when requested.

Is it possible to precompile .cshtml files in MVC6?

like image 817
Stafford Williams Avatar asked Nov 04 '15 09:11

Stafford Williams


People also ask

What does enable Razor runtime compilation do?

Build-time and publish-time compilation of Razor files is enabled by default by the Razor SDK. When enabled, runtime compilation complements build-time compilation, allowing Razor files to be updated if they're edited.

What is MvcBuildViews?

MvcBuildViews builds views temporarily and gives build results back to building process. If there were errors then build fails and errors are shown in Visual Studio errors window.


1 Answers

csproj (VS 2017) Answer

Add a reference to Microsoft.AspNetCore.Mvc.Razor.ViewCompilation:

<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
</ItemGroup>

Turn on razor view compilation upon publishing the project.

<PropertyGroup>
    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
</PropertyGroup>

See this GitHub issue for more details.

xproj and project.json (VS 2015) Answer

Razor Pre-compilation was dropped in ASP.NET Core 1.0 MVC 6 RC2 but was brought back in ASP.NET Core 1.1 using a tool which you can add like so:

  1. Add a reference to Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design under the dependencies section like so:
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": {
    "type": "build",
    "version": "1.1.0-preview4-final"
}
  1. Add a reference to Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools under the tools section like so:
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": "1.1.0-preview4-final",
  1. Add a postpublish script to invoke view compiler:
"scripts": {
   "postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%"
}
like image 125
Muhammad Rehan Saeed Avatar answered Oct 11 '22 20:10

Muhammad Rehan Saeed