<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET 5.0 RC 2 發(fā)布,正式版將在 11 月 .NET Conf 大會上發(fā)布

          共 7686字,需瀏覽 16分鐘

           ·

          2020-10-18 03:53

          原文:http://dwz.win/ThX
          作者:Richard
          翻譯:精致碼農(nóng)-王亮
          說明:
          1. 本譯文舍棄了少許我實在不知道如何翻譯但又不是很重要的語句。
          2. 本文有不少超鏈接,由于微信公眾號和頭條平臺外鏈會被剔除 URL 地址,所以原來本是超鏈接的內(nèi)容會顯示為純文本,如果你需要這些信息可以移步到我的知乎博客園閱讀(搜索“精致碼農(nóng)”可找到我)。

          今天(10月13日)我們發(fā)布了 .NET 5.0 候選版本 2(RC2),它是 11 月 .NET 5.0 正式版發(fā)布前的最后一個 RC 版本。RC2 是一個“上線”版本,表示你可以在生產(chǎn)環(huán)境中使用它。與此同時,我們正在找尋任何遺漏的關(guān)鍵 Bug 報告,這些 Bug 應(yīng)該在最終發(fā)布前得到修復(fù)。

          我們今天也發(fā)布了 ASP.NET Core 和 EF Core 的 RC2 版本。

          你可以下載適用于 Windows、macOS 和 Linux 的 .NET 5.0 版本:

          • 安裝程序和二進制包

          • 容器鏡像

          • 快速安裝程序

          • 發(fā)布說明

          • 已知問題

          • GitHub Issue 跟蹤

          你需要最新的預(yù)覽版 Visual Studio (包括 Visual Studio for Mac) 才能使用 .NET 5.0。

          .NET 5.0 包括許多改進,特別是單文件應(yīng)用程序、更小的容器鏡像、功能更強的 JsonSerializer API、一套完整的可空引用類型標(biāo)注、新的Target Framework 名稱,以及對 Windows ARM64 的支持。在 .NET 庫、GC 和 JIT 中,性能得到了極大的提高。我們花了很大的工作在 ARM64 的性能上,它有了更好的吞吐量和更小的二進制文件。.NET 5.0 包含了新的語言版本:C# 9.0 和 F# 5.0。你可以查看一些 .NET 5.0 示例,以便你可以親自嘗試這些功能。

          今天是個大好日子,因為我們將拉開 2020 年 .NET@Microsoft 內(nèi)部會議的序幕。屆時將有許多來自 .NET 團隊的演講者,也有來自服務(wù)團隊的開發(fā)人員和架構(gòu)師,他們依靠 .NET 來驅(qū)動微軟云,分享他們的勝利,也分享他們的挑戰(zhàn)。我的演講(不出所料)是“.NET 5.0 中有什么新內(nèi)容”。我的演講將很簡單,會涵蓋我的 .NET 5.0 博文所講到的內(nèi)容!這將是一場精彩的演講。更重要的是,這次會議是我們的機會,讓我們說明為什么微軟團隊?wèi)?yīng)該在 .NET 5.0 發(fā)布后盡快采用它。我所知道的至少有一個大型團隊正在生產(chǎn)中運行 RC1。微軟官方.NET網(wǎng)站 從 Preview 1 開始就一直在運行.NET 5.0,現(xiàn)在正在運行 RC2。本周微軟團隊向我們展示的案例,會與我在所有這些 .NET 5.0 博客文章中向你展示的案例非常相似。.NET 5.0 是一個偉大的版本,它將從根本上改善你的應(yīng)用程序。

          說到會議,請記住 .NET Conf 2020 的日期(譯注:11月10日至12日)。今年,.NET 5.0 將在 .NET Conf 2020 上發(fā)布!請來慶祝并了解新版本。我們還將慶祝我們的 10 周年紀(jì)念日,我們正在努力創(chuàng)造更多的驚喜,值得你的期待。

          就像我為 .NET 5.0 Preview 8 和 .NET 5.0 RC1 所做的那樣,我選擇了一些功能來更深入地介紹,并讓你了解如何在實際情況中使用它們。這篇文章專門介紹 C# 9 模式匹配、Windows ARM64 和 ClickOnce。

          C# 9 模式匹配

          模式匹配是在 C# 7.0 中加入的語言特性。不妨讓 Mads 重新介紹一下這個概念,這是他最初介紹這個特性時的說法:

          C# 7.0 引入了模式的概念,抽象地說,模式是一種語法元素,它可以測試一個值是否具有一定的“形狀”,當(dāng)它具有一定的“形狀”時,就從該值中提取信息。

          這是一個非常好的描述,完美的措辭。

          C# 團隊在 C# 7、C# 8 和 C# 9 的每個版本中都添加了新的模式。在這篇文章中,你將看到這些語言版本中的每一種模式,但我們將重點關(guān)注 C# 9 中的新模式。

          C# 9 中三個新模式是:

          • 關(guān)系模式,使用關(guān)系運算符,如 < 和 >=

          • 邏輯模式,使用關(guān)鍵字 andornot。一個簡短的例子是 foo is not null。當(dāng)你想在一個模式中比較多個事物時,這種類型的模式是最有用的。

          • 簡單類型模式,只使用一個類型,而不使用其他語法進行匹配。

          我是 BBC 夏洛克系列的忠實粉絲。我寫了一個小程序,可以決定一個給定的角色是否應(yīng)該訪問該系列中的某個內(nèi)容。很簡單,這個應(yīng)用的編寫有兩個限制條件:忠于劇中的時間線和人物,這是一個很好的模式演示。如果有的話,我懷疑我在第二個約束條件上最失敗。在一個特定的應(yīng)用程序中(尤其是這樣一個小應(yīng)用程序),你會發(fā)現(xiàn)一套比人們預(yù)期的更廣泛的模式和風(fēng)格。

          當(dāng)我在使用模式時,我有時想做一些與我所熟悉的模式實現(xiàn)稍微不同的事情,但不知道如何擴展該模式來滿足我的目標(biāo)。鑒于這個示例,我希望你能發(fā)現(xiàn)更多的方法,也許你以前不知道這些可以擴展你熟悉的模式的技巧。

          應(yīng)用內(nèi)有兩個 switch 表達式,讓我們從兩個中較小的一個開始。

          public static bool IsAccessOKAskMycroft(Person person) => person switch
          {
          // Type pattern
          OpenCaseFile f when f.Name == "Jim Moriarty" => true,
          // Simple type pattern
          Mycroft => true,
          _ => false,
          };

          前兩種模式是類型模式。第一個模式是 C# 8 就支持的。第二種--Mycroft--是新的簡單類型模式的一個例子。在 C# 8 中,這個模式需要一個標(biāo)識符,就像第一個模式一樣,或者至少需要一個棄元,比如 Mycroft _。在 C# 9 中,不再需要標(biāo)識符。是的, Mycroft 是應(yīng)用程序中的一個類型。

          在我向你展示另一個 switch 表達式之前,讓我們再簡單一點。下面的 if 語句演示了一個邏輯模式,是兩個使用 is 的類型模式實例。

          if (user is Mycroft m && m.CaresAbout is not object)
          {
          Console.WriteLine("Mycroft dissapoints us again.");
          }

          這里不知道 user 變量的類型,所以測試它是不是 Mycroft 類型,如果是,則分配給 m。同時判斷 Mycroft 對象上的一個屬性是否是一個 object 類型。

          另一種 switch 表達式則要寬泛得多。

          public static bool IsAccessOkOfficial(Person user, Content content, int season)
          => (user, content, season) switch
          {
          // Tuple + property patterns
          ({Type: Child}, {Type: ChildsPlay}, _) => true,
          ({Type: Child}, _, _) => false,
          (_ , {Type: Public}, _) => true,
          ({Type: Monarch}, {Type: ForHerEyesOnly}, _) => true,
          // Tuple + type patterns
          (OpenCaseFile f, {Type: ChildsPlay}, 4) when f.Name == "Sherlock Holmes" => true,
          // Property and type patterns
          {Item1: OpenCaseFile {Type: var type}, Item2: {Name: var name}}
          when type == PoorlyDefined && name.Contains("Sherrinford") && season >= 3 => true,
          // Tuple and type patterns
          (OpenCaseFile, var c, 4) when c.Name.Contains("Sherrinford") => true,
          // Tuple, Type, Property and logical patterns
          (OpenCaseFile {RiskLevel: >50 and <100 }, {Type: StateSecret}, 3) => true,
          _ => false,
          };

          唯一真正有趣的模式是最后一個模式(在棄元-之前),它測試 Risklevel 是否 >50 且 <100。有很多次我都想用這種形式的邏輯模式語法寫一個 if 語句,而不需要重復(fù)一個變量名。這個邏輯模式也可以用下面的方式來代替,并且會更接近這篇 C# 9 博文中演示的語法,它們是等價的。

          (OpenCaseFile {RiskLevel: var riskLevel}, {Type: StateSecret}, 3) when riskLevel switch
          {
          >50 and <100 => true,
          _ => false
          }

          我遠不是一個語言專家,Jared Parsons 和 Andy Gocke 在本文這一部分給了我很多幫助,謝謝!我的關(guān)鍵絆腳石是一個元組的 switch。有時,位置模式很不方便,你只想使用元組的一部分。這就是屬性模式的作用,你可以在下面的代碼中看到。

          {Item1: OpenCaseFile {Type: var type}, Item2: {Name: var name}}
          when type == PoorlyDefined && name.Contains("Sherrinford") && season >= 3 => true,

          這里面有相當(dāng)多的問題。關(guān)鍵的一點是,這里測試的是元組屬性,而不是按位置匹配元組。這種方法提供了更多的靈活性。你可以在一個給定的 switch 表達式中自由地混合這些方法。希望這能幫助一些人,至少對我有幫助。

          如果你對這個應(yīng)用的功能很好奇,我已經(jīng)把程序的輸出保存在 app gist 中。你也可以自己運行這個程序。它需要 .NET 5.0 RC2 才能運行。

          ClickOnce

          多年來,ClickOnce 一直是一個流行的 .NET 部署選項。現(xiàn)在它已支持為 .NET Core 3.1 和 .NET 5.0 Windows 應(yīng)用程序。當(dāng)我們在 .NET Core 3.0 中添加了 Windows Forms 和 WPF 支持時,我們就知道很多人會希望使用 ClickOnce 來部署應(yīng)用程序。在過去的一年里,.NET 和 Visual Studio 團隊共同合作,在命令行和 Visual Studio 中啟用了 ClickOnce 發(fā)布。

          我們從項目一開始就有兩個目標(biāo):

          • 在 Visual Studio 中實現(xiàn)熟悉的 ClickOnce 體驗。

          • 使用 MSBuild 或 Mage 工具,通過命令行流程為 ClickOnce 發(fā)布啟用現(xiàn)代 CI/CD。

          用圖片向你展示體驗是最簡單的。

          我們先從 Visual Studio 的體驗開始,它是以項目發(fā)布為中心的。

          我們目前支持的主要部署模式是框架依賴型應(yīng)用。很容易采取依賴 .NET 桌面運行時(就是包含 WPF 和 Windows Forms 的那個)。如果需要的話,你的 ClickOnce 安裝程序?qū)⒃谟脩魴C器上安裝 .NET 運行時。我們還打算支持獨立的和單文件的應(yīng)用程序。

          你可能會想知道,你是否還能利用 ClickOnce 的離線和更新功能。是的,你可以。

          包括相同的安裝位置和清單簽署功能。如果你有嚴(yán)格的簽名要求,你會喜歡上這個新的體驗。

          現(xiàn)在,讓我們切換到 Mage 的命令行體驗。

          Mage 最大的變化是,它現(xiàn)在是一個 .NET 工具,發(fā)布在 NuGet 上。這意味著你不需要在你的機器上安裝任何特殊的東西。你只需要 .NET 5.0 SDK,然后你就可以把 Mage 作為一個 .NET 工具來安裝。你也可以用它來發(fā)布 .NET 框架的應(yīng)用程序,不過,SHA1 簽名和部分信任支持已經(jīng)被移除。

          Mage 的安裝命令如下:

          dotnet tool install -g Microsoft.DotNet.Mage

          用以下命令配置并發(fā)布示例應(yīng)用程序:

          下面一條命令將啟動ClickOnce應(yīng)用程序:

          然后出現(xiàn)熟悉的 ClickOnce 安裝對話框:

          安裝應(yīng)用后,會啟動應(yīng)用:

          重新構(gòu)建并重新發(fā)布應(yīng)用程序后,用戶將看到一個更新對話框:

          更新后的應(yīng)用程序?qū)⒈粏印?br>

          注意:Mage .NET 工具的名稱將從 mage.net 改為 dotnet-mage,NuGet 包名將保持不變。

          這個圍繞 ClickOnce 發(fā)布和安裝的快速指南應(yīng)該會讓你對如何使用 ClickOnce 有一個好的認(rèn)識。我們的意圖是與使用現(xiàn)有 .NET 框架的 ClickOnce 支持有一樣的體驗。如果你發(fā)現(xiàn)我們沒有達到這個目標(biāo),請告訴我們。

          ClickOnce 瀏覽器集成與 .NET Framework 相同,在 Edge 和 Internet Explorer 中得到支持。如果支持其他瀏覽器對你的用戶有多重要,也請告訴我們。

          Windows Arm64

          MSI 安裝程序現(xiàn)在可以用于 Windows Arm64,你可以從下面的 .NET 5.0 SDK 安裝程序圖片中看到。

          為了進一步證明這一點,我在 Arm64 機器上運行 dotnet-runtimeinfo 工具來演示配置。

          C:\Users\rich>dotnet tool install -g dotnet-runtimeinfo
          You can invoke the tool using the following command: dotnet-runtimeinfo
          Tool 'dotnet-runtimeinfo' (version '1.0.2') was successfully installed.

          C:\Users\rich>dotnet-runtimeinfo
          **.NET information
          Version: 5.0.0
          FrameworkDescription: .NET 5.0.0-rc.2.20475.5
          Libraries version: 5.0.0-rc.2.20475.5
          Libraries hash: c5a3f49c88d3d907a56ec8d18f783426de5144e9

          **Environment information
          OSDescription: Microsoft Windows 10.0.18362
          OSVersion: Microsoft Windows NT 10.0.18362.0
          OSArchitecture: Arm64
          ProcessorCount: 8

          .NET 5.0 SDK 目前不包含 Windows Arm64 上的 Windows 桌面組件--Windows Forms 和 WPF。這一遲來的變化最初是在 .NET 5.0 Preview 8 的帖子中分享的。我們希望在 5.0 服務(wù)更新中為 Windows Arm64 添加 Windows 桌面包,我們目前還沒有確定具體的日期。目前,Windows Arm64 上支持 SDK、控制臺和 ASP .NET Core 應(yīng)用程序。

          結(jié)束

          我們現(xiàn)在非常接近完成 5.0 這個版本,并已將其傳遞出去以供廣泛的生產(chǎn)使用。我們相信它已經(jīng)準(zhǔn)備好了。它在微軟的生產(chǎn)環(huán)境中使用,已經(jīng)給我們帶來了很大的信心。我們期待你有機會在自己的環(huán)境中真正使用 .NET 5.0。

          我們已經(jīng)很久沒有分享我們的社交媒體了,敬請關(guān)注我們的 dotnet 維護信息:

          • Twitter

          • Facebook



          資源分享



          謝謝您的支持,需要任何資源,只需要在公眾號后臺回復(fù)對應(yīng)數(shù)字即可:

          01:dotnet
          02:java
          03:android
          04:C++
          05:qt
          06:react

          沒有的資源或資源鏈接失效,請給我留言或加我微信。
          另:大部分資源可在我的網(wǎng)站搜索哦:https://dotnet9.com



          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最新流出毛片视频 | 亚洲欧洲视频在线观看 | 日批视频免费看 | 苍井空高潮A片 | 操逼视频在线播放 |