Razor Viewのプリコンパイル

2018/09/12
ASP.NET Core MVC あるいは Razorページのプロジェクトをサーバーに配置する際、Viewファイルを予めコンパイルしておくか、コンパイルせずにそのまま配置し、実行時にコンパイルされるようにするか二通りある。

プリコンパイルすると

  • 発行後のサイズが小さくなる
  • 起動が速くなる

プリコンパイルしないと

  • サーバー側でコードの変更が可能(PHPやRubyのような使い方が可能)

プリコンパイルのON/OFF

プリコンパイルにはprecompilation tool(3.0で廃止予定)を使う方法とRazor SDKを使う方法がある。
Razor SDKではデフォルトでプリコンパイルされる。

Razor SDKを使わない場合

.csprojファイルのMvcRazorCompileOnPublishでON/OFF
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

  … 省略

</Project>

Razor SDKを使う場合

Microsoft.NET.Sdk.RazorがなければNugetでインストール。
デフォルトでプリコンパイルするので、下記はしないようにする場合
のはずですが、MVCでは上手くいきましたが、RazorページではMicrosoft.NET.Sdk.Razorを指定したとたん、Nugetが上手くいかない…。この変な日本語が理解できない。
<Project Sdk="Microsoft.NET.Sdk.Razor">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
  </PropertyGroup>

  … 省略

</Project>
OK キャンセル 確認 その他