[轉]如何讓asp.net core mvc發佈時候不編譯cshtml視圖

轉載於:https://baijiahao.baidu.com/s?id=1724200064045898644&wfr=spider&for=pc

 

爲了避免運行時編譯cshtml造成的性能問題,ASP.NET Core MVC項目在發佈的時候默認會把cshtml文件編譯到dll中,但是有的項目希望能在運行時修改cshtml視圖文件。網上有文章講到過在csproj文件中添加<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>等方式來修改這個默認的行爲,但是那些做法都是舊版.net core的做法,在.net 5/6等新版本中不起作用。

下面的方法是我驗證過的在最新版的.net core中有效的不編譯cshtml視圖的做法。

步驟1、

安裝Nuget包:

Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

步驟2、

在Program.cs中的AddControllersWithViews()之後添加對AddRazorRuntimeCompilation()的調用。也就是

builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();

步驟3、

修改項目的csproj文件,在PropertyGroup節點內增加如下兩個選項:

<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>

<RazorCompileOnBuild>false</RazorCompileOnBuild>

完成以上三步設置之後,重新發布ASP.NET Core MVC項目,我們就可以看到cshtml視圖文件沒有被編譯到dll了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章