轉載於: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了.