日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

.NET Core 3.1 已經(jīng)用了很長一段時(shí)間,其實(shí)在 2022 年的年底微軟已經(jīng)不提供支持了,后面的一個(gè) LTS 版本 .NET 6 也會在 2024 年 11 月終止支持,所以直接升級到 .NET 8 是最好的選擇。

微軟官方推出了升級工具:Upgrade Assistant ,鏈接地址如下:

https://dotnet.microsoft.com/zh-cn/platform/upgrade-assistant/tutorial/intro

有了升級工具,升級就變得非常簡單了,本文就介紹使用升級工具將 .NET Core 3.1 項(xiàng)目升級到 .NET 8 。

安裝 Upgrade Assistant

先確保  VS2022  已經(jīng)升級到了 17.8 。然后在 VS2022 的擴(kuò)展管理中安裝擴(kuò)展:.NET Upgrade Assistant ,需要特別注意的是,如果之前安裝過升級工具擴(kuò)展,需要卸載重新安裝。

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

升級項(xiàng)目

.NET Core 3.1 的一個(gè)解決方案中,會有很多的項(xiàng)目,按照項(xiàng)目的依賴關(guān)系,從最底層的項(xiàng)目逐個(gè)往上進(jìn)行升級。

安裝完升級工具后,在項(xiàng)目上點(diǎn)擊右鍵就會出現(xiàn) Upgrade 按鈕:

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

在彈窗中選擇升級方式:

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

選擇升級的目標(biāo)版本,這里我選擇 .NET 8 ,這是一個(gè)長線支持版本,最新版本的升級工具只支持升級到 7 和 8 了,如果有升級到 .NET 6 的需求,就需要使用老版本了:

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

選擇需要更新的內(nèi)容,默認(rèn)全選,點(diǎn)擊「Upgrade selection」進(jìn)行升級:

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

很快就可以看到升級成功的提示:

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

編譯

我驗(yàn)證過好幾個(gè)低版本的項(xiàng)目,使用工具升級的過程沒有出現(xiàn)果任何錯(cuò)誤,但升級完后進(jìn)行代碼編譯就會出現(xiàn)各種問題了。

問題1:Ionic.zip

在原來的版本中,項(xiàng)目中的 zip 壓縮用到了 Ionic.zip ,現(xiàn)在 .NET8 已經(jīng)不支持了,需要換成 DotNetZip :

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

問題2:BinaryFormatter 已經(jīng)過時(shí)

代碼中有不少地方使用到了二進(jìn)制的序列化,但 BinaryFormatter 在 .NET8 中已經(jīng)棄用,有兩種解決方式:

  • 修改源代碼,采用新的推薦的方式進(jìn)行替換。
  • 修改項(xiàng)目文件,忽略此問題,在項(xiàng)目文件種添加下面配置:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
  </PropertyGroup>
</Project>

參考:https://learn.microsoft.com/zh-cn/dotnet/fundamentals/syslib-diagnostics/syslib0011。

問題 3:Aspose  使用問題

項(xiàng)目中對 office 文件的處理,使用了 Aspose 套件,升級后版本有兼容性問題,升級到對應(yīng)的版本就行。

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

問題 4:方法二義性

在之前的版本中,List 存儲的如果是一個(gè)復(fù)雜類型,想要按照類型中的某個(gè)字段進(jìn)行去重是沒辦法直接實(shí)現(xiàn)的:

List<UserInfo> list = new List<UserInfo>();
list.Add(new UserInfo() { Name="oec2003",Age=18});
list.Add(new UserInfo() { Name = "oec2003" ,Age=18});
list.Add(new UserInfo() { Name = "oec2004" ,Age=18});
list.Add(new UserInfo() { Name = "oec2004" ,Age=18});

var distnctList = list.DistinctBy(x=>x.Age);

foreach (var item in distnctList)
{
    Console.WriteLine(item.Name);
}

public class UserInfo
{
    public string Name { get; set; }
    public int Age { get; set; }
}

上面代碼中的 DistinctBy 方法在 .NET Core 3.1 中是沒有的,所以我們擴(kuò)展了一個(gè) DistinctBy 方法,沒想到 .NET8 中已經(jīng)默認(rèn)提供了,會導(dǎo)致方法沖突,只需要將我們的擴(kuò)展方法去掉,使用默認(rèn)就好。

.NET Core 3.1 升級到 .NET 8,看看都有哪些變化

運(yùn)行

解決了上面的幾個(gè)編譯問題后,程序就能正常啟動運(yùn)行了,整個(gè)過程還是非常快速的,不得不說,微軟的技術(shù)向下兼容做的是非常不錯(cuò)的,再加上工具的加持,升級到新的版本沒有什么壓力和負(fù)擔(dān)。

相比之下,其他有些技術(shù)雖然也在不停地更新迭代,但主流使用的還是某個(gè)特定的版本。

分享到:
標(biāo)簽:NET
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定