<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      基于.NetCore開發博客項目 StarBlog - (12) Razor頁面動態編譯

      系列文章

      前言

      最近有段時間沒更新博客開發筆記了,怠惰了啊 = =..

      趁著周末,給博客項目完善了一些細節的功能,然后準備部署上線~

      本來這篇文章是要記錄幾個功能(主題切換、項目監控、隨機圖片接口)的實現的,不過我在寫頁面的時候發現每次改完Razor都要重啟好麻煩,所以踩坑了一番,便有了本文。

      Razor頁面動態編譯

      雖然.Net6開始支持部分代碼熱更新了,不過還是很雞肋,經常修改Razor頁面了但點Apply還是沒效果~

      我還是用回.NetCore3.1之前常用的動態編譯比較好~

      首先NuGet安裝Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,在Program.cs中配置一下

      原本添加MVC服務是這樣的

      builder.Services.AddControllersWithViews(
          options => { options.Filters.Add<ResponseWrapperFilter>(); }
      )
      

      改成這樣(開發模式才啟用動態編譯)

      var mvcBuilder = builder.Services.AddControllersWithViews(
          options => { options.Filters.Add<ResponseWrapperFilter>(); }
      );
      if (builder.Environment.IsDevelopment()) {
          mvcBuilder.AddRazorRuntimeCompilation();
      }
      

      也可以不修改C#代碼,通過環境變量的方式實現,修改launchSettings.json文件,添加一個環境變量

      這樣啟動程序的時候會動態加載RuntimeCompilation

      "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development",
          "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
      

      另外,還有更徹底的方法,發布打包的時候不要編譯cshtml文件,方便在發布后修改Razor頁面。

      在項目配置文件 (xxx.csproj) 中配置

      <PropertyGroup>
          <RazorCompileOnBuild>false</RazorCompileOnBuild>
          <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
      </PropertyGroup>
      

      這樣在發布的時候,所有的 Razor 視圖都不會被預編譯了,并且所有的視圖都會一同被發布,方便線上環境修改Razor頁面。

      不過要注意在發布的生產環境中,修改視圖文件是不會立即生效的,需要重啟程序(對于 IIS 宿主的運行環境需要重啟站點)才會生效。

      還可以配置條件編譯,詳情可以參考:http://www.rzrgm.cn/thinksea/articles/14772837.html

      這樣修改完Razor頁面,保存,就會自動重新編譯,方便修改頁面后實時查看效果。

      配置動態編譯后報錯

      我在這里遇到一個問題,之前.NetCore3.1的項目沒遇到過

      添加了動態編譯后啟動程序報錯

      Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'source')
         at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
         at System.Linq.Enumerable.OfType[TResult](IEnumerable source)
         at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionDescriptorProvider..ctor(IEnumerable`1 pageRouteModelProviders, IOptions`1 mvcOptionsAccessor, IOptions`1 pag
      esOptionsAccessor)
         ...省略一大堆報錯信息
         at Program.<Main>$(String[] args) in StarBlog\StarBlog.Web\Program.cs:line 96
      

      經過搜索,找到一個Github issues:https://github.com/dotnet/aspnetcore/issues/40609

      Do you have the 6.0.201 SDK / 6.0.3 Microsoft.AspNetCore.App runtime installed? Patch builds of packages typically require a corresponding version of the runtime to be installed.

      看了下我的dotnet SDK版本,是 6.0.101 ,看來是SDK的bug,更新一下版本應該就行~

      (過了十分鐘)更新好了,問題果然解決了!

      參考資料

      posted @ 2022-06-19 22:22  程序設計實驗室  閱讀(1820)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 99热门精品一区二区三区无码| 久久综合色之久久综合色 | 草草浮力影院| 国产又色又爽又高潮免费| 国产一精品一av一免费| 日韩人妻无码精品久久久不卡 | 久久99国产精品尤物| 狠狠色丁香婷婷综合尤物| 亚洲制服无码一区二区三区| 重庆市| 国产av综合色高清自拍| 国产小受被做到哭咬床单GV| 日本一道一区二区视频| 日本深夜福利在线观看| 国产线播放免费人成视频播放| 亚洲美免无码中文字幕在线| 天堂av网一区二区三区| 野花香电视剧免费观看全集高清播放 | 亚洲国产大片永久免费看| 亚洲欧美电影在线一区二区| 97超级碰碰碰久久久久| 老妇xxxxx性开放| 国产精品美人久久久久久AV| 国产 麻豆 日韩 欧美 久久| 亚洲日韩亚洲另类激情文学| 国产在线一区二区不卡| 最新偷拍一区二区三区| 国内自拍偷拍一区二区三区| 唐人社视频呦一区二区| 国产av国片精品一区二区| 乱人伦人妻中文字幕无码久久网 | 国产精品人妻一码二码尿失禁| 最新亚洲av日韩av二区| 国产精品天干天干综合网| 久久精品国产99久久美女| 欧美一区二区三区啪啪| 老司机精品影院一区二区三区| 亚洲综合黄色的在线观看| 日韩AV高清在线看片| 丰满岳乱妇久久久| 中文字幕无码专区一VA亚洲V专|