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, 実装技術

関連記事

開発・検証用のダミーメールサーバの構築(fakeSMTP)

アプリ開発や検証等でメールサーバを利用したい場合がある。 プロジェクトで共有の検証用メールサーバを構築できると効率が良いか、その準備が間に合わなかったり、使用者が限定的な場合は、使用者の開発環境上に構 …

ASP.NET Core: タグヘルパーでのHTML編集方法

ASP.NET Coreで独自のタグを生成するためにTagHelperを使用します。 TagHelperでどのようにHTMLを生成できるかを説明します。 概要 ここではタグヘルパーで出力するHTMLの …

VULTR: SSH鍵の作成とVPSの構築

VULTRでVPSを作成し、Tera Term(SSH)で管理する方法について説明します。 概要 VULTRにおいて、次の前提でVPSを構築する手順を説明します。 “New York(NJ …

ExcelからPowerPointへの図表貼り付けVBA

パフォーマンスモニタの監視データ(blg)に基づいてPowerPointで報告用のレポートを作成する必要がありました。パフォーマンスログのデータをCSVに変換してExcelに取り込んでグラフを作成し、 …

Wildfly11のインストール

このサイトでWebアプリを公開したい。 仕事ではJBoss Enterprise Application Server(JBoss EAP)を使う機会が多いのでそれを使いたいがライセンス料がかかる。無 …