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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

ASP.NET Core 3.0 迁移避坑指南

發布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 3.0 迁移避坑指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.前言

.NET Core 3.0將會在 .NET Conf 大會上正式發布,截止今日發布了9個預覽版,改動也是不少,由于沒有持續關注,今天將前面開源的動態WebApi項目遷移到.NET Core 3.0還花了不少時間踩坑,給大家分享一下我在遷移過程中遇到的坑。遷移的版本是當前Release最新版本 .NET Core 2.2 到 .NET Core 3.0 Preview 9。

二.ASP.NET Core 項目遷移

官方遷移文檔:從 ASP.NET Core 2.2 遷移到3.0?,這個官方文檔比較詳細,但是有一些東西里面并沒有寫。

1.更改框架版本

將 TargetFramework 版本改為?netcoreapp3.0

2.移除Nuget包

移除所有 Nuget包

將其余 Nuget 包更新到支持 .NET Core 3.0 版本

3.Program更改

public class Program{public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});}

4.Startup更改

ConfigureServices 方法:

  • services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);?改為?services.AddControllers()(WebApi) /?services.AddControllersWithViews();(MVC)

  • Configure 方法:

  • 該方法里獲取Host環境信息接口類型,IHostingEnvironment改為?IWebHostEnvironment

  • app.UseMVc?改為:

  • WebApi:

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

    MVC:

    app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");});

    關于Json組件

    ASP.NET Core 3.0 默認移除了?Newtonsoft.Json?,使用了微軟自己實現的?System.Text.Json,如果要改為 Newtonsoft.Json ,那么有以下兩步:

    1.安裝Nuget包:

    Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson

    2.注冊

    三.類庫(Class Library Net Standard 2.0)項目遷移

    因為 ASP.NET Core 3.0 對元包機制的改動,現在不能通過nuget安裝 Microsoft.AspNetCore.All 或者 Microsoft.AspNetCore.App 3.0版本,以及他們包含的大多數Nuget包也不能通過nuget安裝了(沒有3.0對應的版本)。如果說還引用2.2版本的nuget包,那么運行起來可能會出錯。元包被包含在了 .NET Core SDK中,這意味著如果我們的類庫項目依賴了 AspNetCore 相關組件,那么將沒法繼續將項目目標框架設置為 .NET Standard 了,只能設置為.NET Core 3.0,因為?ASP.NET Core 3.0 only run on .NET Core?

    元包機制改動原因:https://github.com/aspnet/AspNetCore/issues/3608

    1.更改框架版本

    2.更新Nuget包

    移除 Microsoft.AspNetCore.* 不具有 .NET Core 3.0 的版本,例如:

    添加 FrameworkReference(不是 PackageReference) 引用:

    三.結束

    題外話:ASP.NET Core 直到2.2 是可以同時運行在 .NET Framework 和 .NET Core 中,但是從 ASP.NET Core 3.0 開始,將會只支持 .NET Core。

    相關資料:A first look at changes coming in ASP.NET Core 3.0

    上面說的改動,微軟官方都有解釋原因,其實是為了變得更好而改動,彌補以前的缺點,只不過對于用了這么久的Core來說有點折騰,但是還是能接受,為了更好的 .NET Core。

    總結

    以上是生活随笔為你收集整理的ASP.NET Core 3.0 迁移避坑指南的全部內容,希望文章能夠幫你解決所遇到的問題。

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