.NET Core 3.0 正式版已在 9/23 舉辦的 .NET Conf 2019 同步釋出,而 .NET 版本未來發展的 Roadmap 也已大勢底定,.NET 4.8 將是最後一個 .NET Framework 版本,之後 .NET Core 將更名為 .NET 5,繼承 .NET 路線持續發展下去。

計劃的發表時程為:

  • .NET Core 3.0 在 2019/9 發表
  • .NET Core 3.1 將於 2019/11 推出,為 LTS (Long Term Support,長期支援版)
    更新:3.1 發佈時程已延至 2019/12,感謝 eightcloud 補充。

之後 .NET Core 將更名 .NET,固定每年釋出新版,並定義雙數版號為 LTS 版,單數版號為 Current 版:參考

  • .NET 5.0 2020/11
  • .NET 6.0 LTS 2021/11
  • .NET 7.0 2022/11
  • .NET 8.0 LTS 2023/11

LTS 版象徵長期且穩定的技術支援,對我來說 .NET Core 3.1 LTS 是重要里程碑,代表 .NET Core 已十足具備作為企業應用解決方案的資格,可以放心應用在工作專案上。(意思是老闆不能罵你胡亂嚐鮮,用還不成熟的新技術寫專案)

.NET Core 跳過 4.0 並更名為 .NET 5.0 的目的在於避免與 .NET Framework 4.x 混淆,這也代表 .NET Framework 將不再有新版了,.NET Framework 4.8 是最後一個 .NET Framework 版本。

雖然依據業界實務經驗,我們有十足信心 .NET Framework 再戰十年也沒問題,但 .NET 3.1 LTS 釋出在即,是時候該認真考慮改用 .NET Core 寫新專案,並評估將現有專案移植到 .NET Core/.NET 5。

將現有專案移植 .NET Core 一般會比寫新專案更複雜,以下是一些提示:參考

  1. .NET Core 不支援的技術
    如果 .NET 專案有用到 AppDomains、Remoting、CAS(Code Access Security)、System.EnterpriseServices 等技術,.NET Core 將不會有對映的做法及程式庫,需重新規劃改用其他做法取代。
  2. 預先將專案升級到 .NET 4.7.2
    .NET Framework 升級 .NET Core 最繁瑣的部分是將 .NET Standard 不支援的 API 換成替代的新一代 API。.NET 4.7.2 提供較完整的 .NET Standard API,可避免需要替換時找不到可用的替代 API 。
  3. 善用分析工具輔助
    微軟提供了一個 Visual Studio 套件,.NET Portability Analyzer(簡稱 ApiPort),可分析 .NET 專案或程式產生可攜性報告(Excel 檔),指出程式用到哪些 .NET Core/.NET Standard 不支援的 API( Detail 頁籤細到屬性、方法):

    另外,有個 NuGet 套件,.NET API Analyzer,可提示過時的 API 並指示替代方案。
    開啟「Include prerelease/包含搶鮮版」使用 NuGet 找到 Microsoft.DotNet.Analyzers.Compatibility 並安裝到 .NET Standard 或 .NET Core C# 專案:

    之後如程式碼出現被標註為過時的 API (型別、方法被加註 ObsoleteAttribute)將會出現如 DE0004 格式的警告:

    點選「顯示可能的修正」,有些 API 還有替換建議:

從一畢業投身程式開發這行,沒想過自己的程式生涯能走這麼久。一路走過 ASP、ASP.NET WebForm、ASP.NET MVC (那些熱潮短暫如煙火的前端框架就不提了),沒想到默默地我又再撐到了一次改朝換代,即將邁進 .NET Core/.NET 5。

老兵不死,只是不斷脫皮。哈!

【延伸閱讀】

Some notes of .NET Core roadmap after .NET Core 3.0 released and tips of migrating .NET Framework project to .NET Core/.NET 5.


Comments

# by 小熊子

脫皮=銳變再生

# by eightcloud

> NET Core 3.1 將於 2019/11 推出,為 LTS (Long Term Support,長期支援版) 這個在 preview1 (10/15?) 已經改成 2019/12 了... (3.1 preview1 with VS2019 16.4 preview2 support c++/cli) (昨天 3.1 preview 2 with VS2019 16.4 privew 3)

# by Jeffrey

to 小熊子,呵,脫皮的確是一語雙關,你有聽出弦外之音(握手) to eightcloud,感謝更新資訊,已補充於本文

# by Vb no.1

WinForm到底支不支源啦

# by Huang

架構一直換,結果做的事都一樣,PG人生好累

# by Jeffrey

to Vb no.1, .NET Core 3.0 支援 WinForm,但限定在 Windows 執行。https://docs.microsoft.com/zh-tw/dotnet/core/porting/winforms

# by Plus1

小道消息: 聽說 Asp.NET Core 在 GitHub 上的 Repository 出現了 v3.1.0(無 Preview 後綴) 的 Tag,然而 .NET Core 的 Repo 卻沒有。 https://github.com/aspnet/AspNetCore/tree/v3.1.0

# by Vinix

目前的專案還是使用asp.net web form,改成.net core感覺需要很多工,但能得到對稱的好處嗎?

# by Jeffrey

to Vinix,可以參考這篇 https://blog.darkthread.net/blog/aspnet-5-changes/

Post a comment