NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング ASP.NET Core 実装技術

ASP.NET Core: 変更ページを実行環境に反映

投稿日:2020年3月20日 更新日:

ASP.Net Core(3.0)の開発で、ページ(cshtml)を編集しながらページデザインを確認したい。
既定ではページを変更しても実行環境に反映れずサーバの再起動が必要となり開発効率が悪い。
サーバを再起動しなくてもブラウザで変更ページを確認できる方法を説明します。

設定方法

NuGetで”Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation”パッケージを追加し、次のようにStartup.csのサービス構成でAddRazorRuntimeCompilation()を追加します。
このような設定はあくまでも開発環境のみの使用に留めたいので、デバック時にのみ有効となるよう#if/#else/#endif等のプリプロセッサを使用しています。(DEBUG変数は、ビルドやリリース等のビルド構成プロパティに応じて自動的に設定されます。)

        public void ConfigureServices(IServiceCollection services)
        {
#if !DEBUG
            services.AddControllersWithViews();
#else
            services.AddControllersWithViews().AddRazorRuntimeCompilation();
#endif
        }

なお、この方法はASP.Net Core 3.0以降で有効です。反映できるのはページ変更のみで、コントローラ等のクラスの変更を反映するためにはサーバの再起動が必要です。

参考)ASP.Net Core 2系の変更方法

未検証ですが、ASP.NET Core 2系では、AllowRecompilingViewsOnFileChangeオプションを使用するそうです。

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().AddRazorOptions(options => 
            {
                options.AllowRecompilingViewsOnFileChange = true;
            });
        }

参考)パッケージの追加方法

コマンドラインから実行する方法等もありますが、GUIベースの操作の場合、[ツール]-[NuGetパッケージマネージャー]-[ソリューションのNuGetパッケージの管理]で次のマネージャを開けます。
Razor.RuntimeCompilationを選択し、プロジェクトをチェックして[インストール]をクリックします。







-1. システムエンジニアリング, ASP.NET Core, 実装技術

関連記事

経験から思うログの設計・実装ポリシー

はじめに これまで様々な企業でシステムやWebアプリの設計開発や運用・保守を行ってきました。これらの経験を踏まえて思うログの設計・実装ポリシーについて説明します。 個人の感想や愚痴になっている個所も多 …

Logicool MX Keys(KX800)でキー入力が遅延する

事象 次のようにデスクトップPC(Windows10)にUSBレシーバ+MX Keys(KX800)環境で、キー入力が遅延する事象が時々発生します。 ミリ秒レベルの若干の入力遅延がある。入力できないわ …

Apacheでクライアント証明書認証の方法

概要 クライアント証明書認証を行うリバースプロキシサーバを構築する方法を説明します。 フロントのリバースプロキシサーバ、バックエンドにWebアプリを配置した構成を想定しています。 リバースプロキシサー …

HTML4, HTML5エスケープ(文字参照)

数値文字参照・文字実体参照 半角の不等号(<>等)などのHTML上で直接記述できない文字や記号を表記する方法が文字参照です。 HTMLやXMLの基になっているSGMLから提供されている手段 …

Apache HttpClientの通信内容をダンプ

アプリやミドルウェの動作の正常性確認や問題発生時の問題切り分けのために、HTTPリクエストやレスポンスのヘッダやボディを確認したい場合がある。Java系のアプリではApacheのHttpClientが …