xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

ASP.NET Core 3.0 で cshtml の Edit & Continue を有効化する

ASP.NET Core でフロントエンド開発をするときは「デバッグ実行しながら cshtml の編集をしてブラウザを Reload!」というのが王道中の王道なのではないかと思います。所謂 cshtml に対する Edit & Continue です。少なくとも僕は今までずっとそうしてきました。Web Essentials というヤツの中に BrowserSync なるものがありますが、僕はそういう類の拡張機能は入れたくない派なので使ってないのです。

という、基本中の基本である開発中の行動が ASP.NET Core 3.0 になったら突然できなくなって大変お困り!どうやら ASP.NET Core 3.0 で仕様変更があり、実行時コンパイルを廃止したみたいです。一度コンパイルしたものをずっと使うのはパフォーマンス上とても良いのでありがたい話ですし、ASP.NET Core を Roslyn に依存しない形にするという点では正しい分離な気はします。が、そうは言っても開発中はすこぶる困る!

Edit & Continue を有効にする

Razor の実行時コンパイルの機能は、ASP.NET Core 3.0 から Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation というライブラリとして分離されています。これを NuGet からインストールしましょう。インストールできたら Startup.cs.AddRazorRuntimeCompilation() を追加します。たったこれだけです :)

services
    .AddMvc()
    .AddRazorRuntimeCompilation();  // 追加

この機能は基本的に開発環境だけに適用されれば良いはずなので、以下のようにするのも効果的かと思います。

var mvcBuilder = services.AddMvc();    
if (this.Environment.IsDevelopment())
    mvcBuilder.AddRazorRuntimeCompilation();