日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core 2.0 Web API项目升级到ASP.NET Core 3.0概要笔记

發(fā)布時間:2023/12/4 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 2.0 Web API项目升级到ASP.NET Core 3.0概要笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文結構

  • 先決條件

  • 升級目標框架(Target Framework)的版本

  • 過時的IHostingEnvironment與IApplicationLifetime對象

  • Endpoint Routing與AddMvc中間件

  • Swashbuckle.AspNetCore

  • 總結

手頭有個ASP.NET Core 2.0的項目,打算將里面的依賴包進行一個版本升級,鑒于該項目還是一年前開發(fā)的,使用的是.NET Core 2.0的版本,這次正好借著.NET Core 3.0在上個月剛剛發(fā)布的機會,干脆一起將該項目所使用的.NET Core版本從2.0升級到3.0,但這過程也并不是鼠標點點就能平滑完成的,因此,撰文一篇,簡要介紹一下升級的幾個關鍵點。由于不同的項目所依賴的第三方NuGet包并不相同,所以我只介紹我手上這個項目的升級過程,有些第三方的NuGet包或許還沒有支持.NET Core 3.0的版本,這就需要到這些依賴項的官方主頁或者Github項目上尋找解決方案了。

先決條件

.NET Core 3.0 SDK和Visual Studio 2019 16.3.0以上版本

升級目標框架(Target Framework)的版本

第一步非常簡單,就是在項目上點擊鼠標右鍵,選擇Properties,在打開的項目屬性頁中,將Target framework從.NET Core 2.0改為.NET Core 3.0:

經過這一步操作,我們已經將項目的Target Framework由netcoreapp2.0改為netcoreapp3.0:

然后,不出意外地發(fā)現(xiàn),在解決方案資源管理器中,所有的外部依賴都出現(xiàn)了黃色小嘆號:

編譯輸出窗口也顯示錯誤信息,告知Microsoft.AspNetCore.All這個依賴包無法支持.NET Core 3.0以及更高版本。在NuGet Package Manager中搜索,發(fā)現(xiàn)Microsoft.AspNetCore.All這個依賴包的確沒有3.0的版本:

其實,從.NET Core 3.0開始,所有以“Microsoft.AspNetCore“作為命名開頭的庫,不再提供單獨的NuGet包,這些包所包含的庫文件(DLL)已經全都包含在Microsoft.AspNetCore.App這一公共框架中,而Microsoft.NET.Sdk.Web SDK已經隱式地引用了Microsoft.AspNetCore.App,因此,我們只需要編輯csproj文件,將多余的Microsoft.AspNetCore.XXXX的項目引用刪掉即可(因為項目的SDK已經設置為了Microsoft.NET.Sdk.Web)。刪掉多余的引用之后,保存項目文件,所有黃色小嘆號消失,項目可以正常編譯。

過時的IHostingEnvironment與IApplicationLifetime對象

從.NET Core 3.0開始,IHostingEnvironment與IApplicationLifetime已被標記為“過時(Obsolete)”,這意味著在后續(xù)的.NET版本中,將不再繼續(xù)支持這兩個接口。如果我們在Startup的Configure方法中使用了這兩個對象,那么最好也將這兩個接口分別替換為:IWebHostEnvironment和IHostApplicationLifetime。

Endpoint Routing與AddMvc中間件

ASP.NET Core 3.0默認使用Endpoint Routing,而啟用了Endpoint Routing后,AddMvc中間件就不被支持了。因此,當一個ASP.NET Core項目從2.x升級到3.0的時候,原有的“app.AddMvc()”方法調用就會出現(xiàn)一個警告,即使忽略這個警告強行執(zhí)行程序,也會得到一個異常:

根據(jù)提示,可以用以下代碼來禁用Endpoint Routing,以便繼續(xù)使用app.AddMvc()的方式:

1services.AddMvc(options => options.EnableEndpointRouting = false);

也可以使用下面的代碼來替換AddMvc的調用:

123456app.UseRouting();app.UseEndpoints(endpoints =>{????endpoints.MapControllers();});

Swashbuckle.AspNetCore

如果Web API項目使用了Swashbuckle提供的Swagger,建議升級到5.0.0-rc4,雖然是預覽版本,但是對于.NET Core 3.0的支持是挺好的。其中有兩個變化,第一個是在配置Swagger服務的時候,原來使用的是Swagger的Info類,現(xiàn)在改用Microsoft Open API的OpenApiInfo類;第二個就是需要顯式添加Microsoft.Extensions.PlatformAbstractions包引用。

總結

在進行了以上這些部分的調整之后,我們的項目就可以正常運行在.NET Core 3.0上了:

總的來說,ASP.NET Core的版本升級還是非常簡單容易的,有些細節(jié)方面有可能還是需要進一步的調整,就要根據(jù)項目本身的需要而定了。

總結

以上是生活随笔為你收集整理的ASP.NET Core 2.0 Web API项目升级到ASP.NET Core 3.0概要笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。