https://github.com/dotnet/core/blob/master/release-notes/3.0/3.0.0/3.0.0.md?

github.com

Download .NET Core 3.0 (Linux, macOS, and Windows)?

dotnet.microsoft.com圖標


.NET Core 3.0 是以.NET Core命名的最後一個大版,後續將改名為.NET 5。在走向 .NET 5 的路上又邁出一大步, .NET Framework 跨平台的使命終將由.NET Core來完成。基本可以對.NET Framework Say Goodbye了。

.NET -- A unified platform

更匯總內容查看:

吳鹽以兌:匯總:.NET Core 3.0及asp.net core 3.0正式發布(2019-09-24)?

zhuanlan.zhihu.com圖標

概要內容包括:

  • .NET Core 3.0已經在http://dot.net和http://Bing.com上託管了幾個月,已經通過實戰測試
  • 在許多組件中,性能都得到了極大提高。(詳情見:.NET Core 3.0的性能改進)
  • C# 8 ,添加了非同步流(async streams),新增了 排列/索引(range/index)類型、空引用類型, 以及 模式遞歸( Recursive patterns)。
  • F# 4.7 通過顯式的放棄表達式,和一些鬆散的語法格式,以聚焦於讓事情變得更簡單。新版本包含對LangVersion, 和 nameof 的支持,以及在預覽中打開靜態類的支持。F# 內核庫現在同樣面向 .NET Standard 2.0。 可以參考更多官宣內容 Announcing F# 4.7.
  • .NET Standard 2.1 增加了一些在.NET Core 和 Xamarin中都能使用的類型。(包括:Span&;ValueTask&; SIMD: single instruction, multiple data, 即單指令流多數據流,等等)
  • 添加了高性能JSON APIs,基於span&和UTF-8完全重寫了相關介面。之前是依賴於Json.NET。
  • 使用.NET Core開發Windows 桌面應用 ,支持Windows Forms 和 WPF(而且開源),可支持打包為單個應用(客戶端運行時可以不需要先安裝運行時環境)。
  • .NET Core 應用現在默認為可執行應用,而以前需要通過命令執行,如dotnet myapp.dll。
  • 垃圾回收將使用更少的內存資源。改進的主要受益場景將是同一伺服器上運行多個應用。
  • 支持在Raspberry PiARM 晶元進行IoT開發。
  • 2019年11月發布的 .NET Core 3.1將是一個長期維護版本(LTS, 持續3年以上的支持)。用戶可以先升級到3.0 再升級到3.1,升級過程會很簡單。
  • .NET Core 2.2將會在12/23結束支持(EOL)。
  • 通過與紅帽多年的合作,.NET Core 3.0 在RHEL 8中已經可以通過 紅帽應用流服務 獲取。
  • 在Visual Studio中使用使用 .net core 需要升級至 Visual Studio2019 16.3版本。
  • Visual Studio for Mac需要升級至 8.3版本。
  • Visual Studio Code用戶則保持使用最新的C#擴展版本即可。
  • Azure App Service 對於.NET Core 3.0的部署下正在進行中。
  • Azure Dev Ops 對 .NET Core 3.0 的支持也即將到來。

關於高性能的JSON API

  • 完全重寫了整個API,移出對http://JSON.NET的依賴。http://JSON.NET不再內置,而作為Nuget包發布。
  • 新的JSON API使用更少的內存,擁有更快的執行速度。(原因:新的API中,通過Span&,使用基於byte[]的方法快於基於字元串的方法,因為不必要進行bytes(UTF8)與string(UTF16)的編碼轉換。)

---更新0928---

關於在桌面應用如何打包為單個應用

方法一:

在**.csproj 中,添加 PublishSingleFile的配置節點 ,如下所示

&
&win10-x64&
&
&true&
&
&true&
&

方法二:

使用命令進行發布時,添加參數 PublishSingleFile及PublishTrimmed

dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true

打包出來的文件還是比較大的,我用.NET Core 3.0自帶的樣例工程,打包後單個文件大小約為 152.7MB,但添加上"PublishTrimmed" 的配置後,體積減少至84.2MB

再通過7-Zip 壓縮後,體積大約可壓縮至20MB(19~23,視不同壓縮選項)。

更多信息參考: dotnet/designs/Single-file Publish


————20200104補充————

3.1已經開始用了,用了一段時間之後,來補充一下和之前了解的一些偏差。

之前說在nuget包中不能添加對http://ASP.net core 3.0的引用,其實是因為機制變了,從3.0開始,http://ASP.net就變成了「內置」,不需要顯式添加,但如果你編寫的是個Library而不是Web Application,還是要引用以下的,只不過不是直接引用nuget包,而是「聲明」一下,需要AspNetCore這個框架:&

3.1和3.0比起來基本沒什麼變化,只是小範圍的更新,所以之前如果升級到了3.0,從3.0升級到3.1的話基本不需要做什麼事情。

而從2.1升級到3.0,還是有好些事情要做的,不能說非常麻煩,但對我而言也要踩踩坑,總結回來也不算太難吧。升級好之後覺得這個框架更加精鍊和合理了,比如可以去除一些看起來有點冗餘的引用,Startup.cs也可以減少一定量的代碼,對於將代碼分散到不同的Library去的做法,它提供了更為「官方」的RazorLibrary項目類型。

3.1是一個LTS版本,建議大家從這個版本開始入坑,我看了一下,現在各個主要的Library使用下來都沒啥問題。

————20191015補充————

3.0使用下來發現些問題,一是不會將引用的nuget包中的xml和pdb文件複製到生成的bin目錄,這對我來說是個不小的問題;再就是與3.0相對應的http://ASP.net core 3.0的nuget包似乎還沒上線,我想創建一個庫並添加對3.0的引用都不行;還有3.0並不是一個LTS版本,我建議等3.1,3.1下個月就發布了。

————以下寫於20190926————

我今天寫了篇博客,轉過來:

--------

.NET Core 3.0正式版發布了,令人興奮。

WPF

其實,.NET Core 2.1開始已經是個很完善的版本,3.0又帶來了什麼呢?我站在我的使用角度來看,最最令人振奮的就是:能用WPF了!能用WPF了!能用WPF了!

那Linux能不能用WPF?——嗯……還是不行,雖然能夠用.NET Core SDK開發WPF程序,但它依賴於.NET Core Desktop Runtime,這個運行時目前只有Windows版本,所以別的平台暫時還不能用WPF。可你不覺得這已經是巨大的進步了嗎?這樣一來,我就可以跟.NET Framework說bye bye了,全面進入.NET Core時代。同時,WinForm也是被支持的,吼啊!

我立馬升級了Visual Studio 2019至16.3.1,直接支持創建WPF(.NET Core)項目,開發體驗和之前開發WPF沒什麼差別,完美!

另外,現在的dotnet程序可以直接編譯成可執行文件(exe)了,而不再需要「dotnet app.dll」這種命令帶參數的方式來運行。

系統要求及兼容性

現在我可以根據客戶的需求編寫一些桌面應用發給用戶了,但要是客戶的操作系統不支持.NET Core 3.0那就白乾了,所幸的是.NET Core 3.0對操作系統的要求並不算很過分:

  • Windows 7 SP1+,Windows 8.1+,Windows 10 1067+,Windows Server 2012 R2 SP1+(x86/x64皆可)
  • Redhat 7,CentOS 7,Ubuntu 16.04+,Fedora 29+(需要x64)
  • MacOS 10.13+

Windows7還是支持的,吃了一顆定心丸,要知道,還有海量的客戶仍在使用Windows7。好吧,放心升級了。

至於兼容性,我沒發現有什麼問題,之前寫的那些target為.NET Standard 2.0的庫都沒問題。

Runtime

SDK可以認為是同一套,但Runtime根據不同的系統和不同的需求,有不同的安裝包,我們可以簡單地這麼認為:安裝.NET Core Runtime,如果是Windows環境且需要WPF之類的桌面應用,再安裝.NET Core Desktop Runtime。

具體看:https://dotnet.microsoft.com/download/dotnet-core/3.0

CentOS下如何安裝?

參考這個鏈接:https://dotnet.microsoft.com/download/linux-package-manager/centos7/sdk-current

再列一些我認為很有用的東西

  • 性能大幅提高,我沒怎麼測過,但2.1的性能我感覺就已經不錯了,吼啊!
  • C# 8,C# 7的那些新特性我還沒完全用上呢,8就出來了,C#的語言特性再跟其它語言甩開距離,Cool。
  • 更快的JSON處理API,做WebAPI,那是大量的JSON,增強JSON的功能很有用。
  • 升級版本覆蓋前一版本,過去安裝SDK的時候2.1.800,2.1.400是獨立的,會消耗更多磁碟空間,現在更新版覆蓋之前的版本,同時SDK的磁碟空間佔用減少了(牛)。

總之,照這麼說,我沒有理由不升級到3.0啊。

.NET Core 3.0會非常有前途,更多相關內容直接看這個吧:https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/


據Scott的博客表明,.NET Core 3.0是歷史上最成功的版本,幾個月時間社區關注者都超過了100w~

確實也做了非常多的升級,比如大家期待已久的winform和wpf,第一次在.NET Core也可以上手開發了。

不過最讓人期待的是,.NET Core 3.0之,就是.NET5啦。截止05.15,.NET5已經出了3個預覽版了,11月份能如期上映RC版嗎?一起拭目以待!

說點題外話,5月份的語言排名,C#份額還在持續增長,優秀!


拍手稱快,我DotNet日後若是能揚眉吐氣,DotNet Core 3.0功不可沒。

說實話了,我不擔心http://ASP.NET Core,也不擔心WPF和WinForm。他們會在他們的領域繼續做著他們該做的事情。或許會吸引一點個人開發者和一些小項目,但是對於國內的大環境應該擊不起什麼波浪。

我唯一擔心的是Blazor,我看了這個東西感覺很有搞頭,我也準備去嘗嘗鮮。但是考慮到微軟向來有「領先一步是先驅,領先兩步是先烈」的傳統,我對這個玩意還是保謹慎樂觀,甚至不樂觀的態度。


Blazor Server 正式面世.

客戶端程序在伺服器上執行 , 瀏覽器作為一個映射的界面,

伺服器可以隨心所欲地, 安全地讀寫文件與資料庫.

不再需要寫TMD的WebServices/AJAX/WebAPI/亂七八糟的通信玩意了.

這簡直就是企業開發的福音.


推薦閱讀:
相关文章