由於微軟工程師的辛勤腦洞和勞作,.NET 生態如何演變完全看他們的決策,其中包含社區吸納內容、團隊討論結果等等,不乏一些工程師、架構師偏好,很難摸得准。
就比如這一次未來規划,他們希望將 .NET Core 和 .NET Framework,以及 Xamarin 和 Mono,合並到一個框架里來維護,項目結構標准化,不再繼續更新到 .NET Framework 5 和 .NET Core 4,后續再有新的功能性更新僅維護一套代碼庫,同時對 .NET Framework 4.8 和 .NET Core 3.1 LTS 再進行一段時間的非功能性維護,不再添加新功能。並且為避免和 .NET Framework 4.x 的大版本有所沖突和誤解,直接從 .NET Core 3.1 跳到 .NET 5,去掉 Core 的字樣。
目前已更新到 Preview 7,距離正式版發布還有兩三個月的時間,屆時一波更新在所難免。
參考
https://devblogs.microsoft.com/dotnet/introducing-net-5/ 以及
https://news.ycombinator.com/item?id=19840763,發布在即的同時有一些疑問也在社區內被廣泛提及,需要微軟的工程師們提上日程和廣大 .NET 開發用戶探討,雖然他們並不一定在乎部分 .NET 用戶的質疑聲(冷漠臉):
- 合並了這么多內容,.NET 5 會不會太重,依賴的二進制文件增多,增加發布包的大小,或者 docker 基礎鏡像的大小,存在許多用不到的架構和功能,就像 Abp vNext 一樣,.NET 5 確實也標榜自己為 .NET Core vNext,一個多元一體化平台。其中主要影響的是 SDK,對於發布文件來說影響不大,因為運行時對應着不同的 Runtime,尤其是 ASP NET Core,不用過多的擔心,不會有多余的引用和內容,但桌面應用以及其他應用就不一定了。其中有些東西不需要內置到 SDK 里,通過 NuGet 包按需引用即可。
- 上網查資料搜索時,搜 .NET、.NET 5 會不會直接影響到搜索結果,因為原先的 .NET Framework 默認為 .NET,而跨平台的 .NET 為 .NET Core,這樣搜索 .NET Core 相關的內容時,很容易在搜 .NET 時漏掉 3.1 前的帖子,搜 .NET Core 時漏掉 5 以后的帖子。 同樣的,對於 ASP NET Core 的影響略小,因為它的名字沒有變,仍然搜索帶 Core 字樣的 ASP.NET Core。奇怪的是這個 Core 為什么還保留着呢,ASP.NET 原先本身也就到 4.8,沒有更新的版本號,革命不徹底啊,感覺既然革 Core 的命,就干脆叫 ASP.NET 5,讓社區去適應多好,本來一部分老微軟人也是向來多從自身企業的利益出發,不太考慮社區的意見,顯得比較傲慢。
- 對於 Win 7 系統會不會支持 .NET 5 微軟團隊也有點迷,從 Win 7 從 2020年1月份開始停止 Extended Support 的情況來看,早晚都會不再支持更新版本的 .NET。但就目前 .NET 團隊發布的說明和討論來看, .NET Core 3.1 和 .NET 5 還是會支持 Win 7 SP1 的。官方網站 https://docs.microsoft.com/en-us/dotnet/core/install/windows?tabs=netcore31 並未挑明了支持,但 github 上面顯示最低能夠支持到 Win 7 SP1,3.1 見 https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1-supported-os.md#windows,5.0 見 https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-supported-os.md。支持的是 Win 7 ESU,即自 2020年1月之后最多再支持三年,相關討論見 https://github.com/dotnet/core/issues/4894#issuecomment-654335388