.NET週報 【5月第3期 2023-05-21】

2023-05-25 15:00:52

國內文章

C# 實現 Linux 視訊會議(原始碼,支援信創環境,銀河麒麟,統信UOS)

https://www.cnblogs.com/shawshank/p/17390248.html

信創是現階段國家發展的重要戰略之一,面對這一趨勢,所有的軟體應用只有支援信創國產化的基礎軟硬體設施,在未來才不會被淘汰。那麼,如何可以使用C#來實現支援信創環境的視訊會議系統嗎?答案是肯定的。

本文講述如何使用C#來實現視訊會議系統的Linux伺服器端與Linux使用者端,並讓其支援國產作業系統(如銀河麒麟,統信UOS)和國產CPU(如鯤鵬、龍芯、海光、兆芯、飛騰等)。

[MAUI】在.NET MAUI中復刻蘋果Cover Flow

https://www.cnblogs.com/jevonsflash/p/17419483.html

這篇文章介紹了Cover Flow,它是iTunes和Finder中的一個檢視選項,允許使用者使用水平捲動的影象檢視他們的音樂庫或檔案。文章詳細介紹了Cover Flow的互動設計和實現原理,以及如何使用.NET MAUI實現跨平臺支援。Cover Flow的核心演演算法是對專輯圖片進行3D變換(3DTransform),在Skia中,3D變換是通過矩陣乘法實現的。文章還介紹了檢視元素的3D變換(3DTransform)中,以檢視元素的Y或X軸作為旋轉中心做旋轉,稱之為3D旋轉。最後,文章提到了Skia 本身是一個開源圖形庫,它提供適用於各種語言和硬體平臺的通用 API,根據本博文提到的演演算法,你可以用Skia嘗試在你擅長的平臺上實現相同的效果。

在Winform中一分鐘入門使用好看效能還好的Blazor Hybrid

https://www.cnblogs.com/hejiale010426/p/17419290.html

這篇文章介紹瞭如何使用Masa Blazor元件庫,通過建立 ServiceCollection ,用於註冊服務,在和BlazorWebView進行繫結,將指定的html和BlazorWebView繫結以後在對於html內的id為 app 的元素進行Blazor元件的繫結繫結到Blazor元件的 App 元件中。文章詳細介紹了Masa Blazor元件庫的使用方法,包括如何在Winform的MainFrom的檔案中建立 ServiceCollection ,用於註冊服務,在和BlazorWebView進行繫結,將指定的html和BlazorWebView繫結以後在對於html內的id為 app 的元素進行Blazor元件的繫結繫結到Blazor元件的 App 元件中;以及如何在 MApp 中使用 Masa Blazor 的元件,所有 Masa Blazor 的元件都必須在 MApp 中使用。

【原始碼解讀】asp.net core原始碼啟動流程精細解讀

https://www.cnblogs.com/1996-Chinese-Chen/p/17417300.html

自從ASP.NET Core釋出至今已7年,我接觸了4年並一直關注原始碼。儘管主要使用Winform,但始終積极參與QQ群討論。幾年前曾計劃解讀ASP.NET Core原始碼,但因篇幅有限,未能詳述。上月底決定以直播形式講解原始碼,於5月18日在微信直播和嗶哩嗶哩錄製。由於不熟悉直播及原始碼眾多,節奏欠佳,導致觀眾較少,為此道歉。之後總結直播內容並補充原計劃未說之話,包括直播總結、開發者提升認知與邏輯思維能力的建議。現已完成整理ASP.NET Core原始碼解讀檔案,希望對大家有所幫助。

C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理與用法詳解

https://www.cnblogs.com/event/p/17414103.html

如題,該文章討論了C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理與用法詳解。

一個.Net開發的功能強大、易於使用的串流媒體伺服器和管理系統

https://www.cnblogs.com/chingho/p/17393098.html

這是基於.Net Core開發的,跨平臺的開源專案;支援多種音視訊格式,如MP3、MP4、AVI、WMV、FLV等;支援本地管理與遠端管理,讓管理員可以輕鬆的管理視訊資源。

而且該專案還提供多平臺的使用者端,支援Web、桌面、Liunx、安卓、蘋果等平臺的使用者端,讓使用者可以隨時隨地觀看視訊。

記一次 Visual Studio 2022 卡死分析

https://www.cnblogs.com/huangxincheng/p/17412584.html

最近不知道咋了,各種程式有問題都尋上我了,你說 .NET 程式有問題找我能理解,Windows 崩潰找我,我也可以試試看,畢竟對 Windows 核心也知道一丟丟,那 Visual Studio 有問題找我就說不過去了,但又不好拒絕,就讓朋友發下卡死的 dump 我看一看。

原來.NET寫的Linux桌面這麼好看?

https://www.cnblogs.com/hejiale010426/p/17410664.html

本文將講解如何使用Blazor執行跨平臺應用,應用到的技術有以下幾點

用於驗證跨平臺性,並且是否提高開發效率,Blazor和Photino一塊使用的技術稱為Blazor Hybrid

.NET通過原始碼深究依賴注入原理

https://www.cnblogs.com/Z7TS/p/17402544.html

依賴注入 (DI) 是.NET中一個非常重要的軟體設計模式,它可以幫助我們更好地管理和組織元件,提高程式碼的可讀性,擴充套件性和可測試性。在日常工作中,我們一定遇見過這些問題或者疑惑。

  1. Singleton服務為什麼不能依賴Scoped服務?
  2. 多個建構函式的選擇機制?
  3. 原始碼是如何識別迴圈依賴的?

雖然我們可能已經知道了答案,但本文將通過閱讀CLR原始碼的方式來學習DI實現機制,同時也更加深入地理解上述問題。如果您不想閱讀原始碼,可以直接跳至文末的解決方案。

C# 中的「智慧列舉」:如何在列舉中增加行為

https://www.cnblogs.com/liqingwen/p/17407424.html

  • 列舉的基本用法回顧
  • 列舉常見的設計模式運用
    • 介紹
  • 智慧列舉
    • 程式碼範例
    • 業務應用
  • 小結

記一次 .NET 某醫院門診軟體 卡死分析

https://www.cnblogs.com/huangxincheng/p/17401330.html

前幾天有位朋友找到我,說他們的軟體在客戶那邊卡死了,讓我幫忙看下是怎麼回事?我就讓朋友在程式卡死的時候通過 工作管理員 抓一個 dump 下來,雖然預設抓的是 wow64 ,不過用 soswow64.dll 轉還是可以的.

常用設計模式之.Net範例程式碼合集

https://www.cnblogs.com/chingho/p/17237462.html

每一次初學者粉絲朋友,在後臺向我諮詢程式設計問題,我除了給他們指導學習路線,我都會建議他們學完基礎知識後,一定要要注重程式設計規範,學習設計模式,修煉內功。

雖然說很多程式設計師,他們日常主要工作是CRUD,但是學習設計模式也是有助於學習公司的框架,另外設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性,所以學習設計模式對提升程式設計能力還是很有幫助的。

所以,今天給大家分享一個採用C#編寫的,常用設計模式原始碼合集。

主題

【英文】Visual Studio 2022 - 17.6 現已可用 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-6-now-available/

Visual Studio 2022 版本 17.6 已經發布。

  • 提高生產力

    • 改進的效能
      • 提高開啟和關閉解決方案的速度
      • 改進了效能分析器收集停止速度
    • 增強編輯器
      • 粘性卷軸
      • 多合一搜尋
      • 括號對著色
      • 拼寫檢查器
    • 偵錯和診斷功能
      • 斷點組
      • .NET遠端偵錯
      • Visual Studio 探查器
      • Visual Studio Profiler 中的檢測
    • Git 共同作業工具
      • 改進的合併對話方塊
      • Git 行取消暫存
      • 連結到 GitHub 問題
  • 構建現代 .NET 和雲原生應用程式

    • Android 清單編輯器

    • JavaScript/TypeScript 中的 CodeLens

    • JavaScript/TypeScript 語法高亮顯示

    • ASP.NET Core Web API 開發

  • 高效的遊戲開發

    • 虛幻引擎紀錄檔檢視器
    • Tim Jones 的 HLSL 工具擴充套件
  • 引入 C++ 跨平臺程式碼庫

    • CMake偵錯程式

    • z/用於 Unix 的遠端檔案資源管理器

    • 匯入STM32CubeIDE工程

    • Vcpkg

  • 企業管理

    • 在組織的 Intranet 網站上託管和部署 Visual Studio 佈局
    • 支援儲存庫中任何位置的多個 .vsconfig

【英文】宣佈 .NET 8 預覽版 4 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-4/

  • MSBuild:新的現代終端構建輸出
  • MSBuild:新的現代終端構建輸出
  • SDK:更新輸出路徑簡化
    • 人工製品
  • 模板引擎:來自 Nuget.org 的包的安全體驗
  • NuGet:在 Linux 上驗證簽名包
  • NuGet:審計安全漏洞的包依賴
  • 庫:改進的 UTF-8 支援
    • IUtf8SpanFormattable
  • 引入時間抽象
    • TimeProvider
  • System.Runtime.Intrinsics.Vector512 和 AVX-512
  • 改進的原生 AOT
  • Linux發行版支援
  • System.Text.Json:收集唯讀成員
  • 改進的 System.Text.Json
    • JsonSerializer.IsReflectionEnabledByDefault
    • JsonSerializerOptions.TypeInfoResolverChain
    • JsonSerializerOptions.TryGetTypeInfo
  • 程式碼生成
    • 連續暫存器分配
    • 優化 ThreadStatic 欄位存取
    • Arm64
    • 向量化程式碼

【英文】EF Core 8 預覽版 4:原始集合和改進的包含 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-ef8-preview-4/

Entity Framework Core 8 Preview 4 已經發布。

此版本包括支援在 LINQ 中轉換 Contains、支援 OPENJSON、指定目標 SQL Server 的相容級別、對原始集合的列支援等。

【英文】.NET 8 Preview 4 中的 ASP.NET Core 更新 - .NET 部落格

https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/

.NET 8 Preview 4 中對 ASP.NET Core 的更新。

-Blazor
- Blazor 元件的流式渲染
- 處理 Blazor SSR 表單提交
- 路由到 Blazor 中的命名元素
- 用於 Blazor WebAssembly 應用程式的 Webcli 打包

  • API創作
    • 擴充套件了對最小 API 中表單系結的支援
    • 帶有 .http 檔案的 API 專案模板
    • 原生AOT
    • 使用編譯時生成的最小 API 進行紀錄檔記錄和例外處理
    • 修剪 ASP.NET Core 頂級 API 中的警告註釋
    • 通過可設定的 HTTPS 支援減少應用程式大小
    • 更新工人服務模板
    • 新增在 slim builder 中設定的預設服務
    • 更改 API 模板 JSON 設定
    • 對編譯器生成的 IAsyncEnumerable 特殊型別的 JSON 序列化支援- 身份驗證和授權
    • 身份 API 端點
    • 更好地支援 IAuthorizationRequirementData 中的自定義授權策略
  • ASP.NET 核心指標

【英文】Rx.NET v6.0 現已可用

https://endjin.com/blog/2023/05/rx-dotnet-v6-released

Rx.NET v6.0 已經發布。

此版本包括 .NET 6/7 支援、修整支援、使用 snupkg 提供符號以及其他改進。

本文包括對 Async Rx.NET alpha 的介紹、v6.0 中的更新以及未來的發展。

【英文】Visual Studio 2022 17.7 預覽版 1 已釋出!- Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-7-preview-1-is-here/

Visual Studio 2022 版本 17.7 Preview 1 已經發布。

  • 生產力
    • 比較檔案
    • 改進的多分支圖和 Git 儲存庫
    • 複製文字並刪除縮排
    • 增強的多合一搜尋
  • .NET 和雲開發
    • 對 .NET 6 和 .NET Standard 的 IntelliTest 支援
    • 將 Blazor WebAssembly 釋出到 Azure 靜態 Web 應用
  • C++ 和遊戲開發
    • 虛幻引擎 C++ 宏格式
    • 虛幻引擎 C++ 命名約定檢查器

【英文】Hot Reload 支援修改泛型! - .NET 部落格

https://devblogs.microsoft.com/dotnet/hot-reload-generics/

在更改泛型程式碼時討論 .NET 8 對熱過載的支援。

現在在以下場景中支援熱過載:

  • 向(非)泛型型別新增新的(靜態、範例)方法
  • 向(非)泛型型別新增新的(靜態、範例)泛型方法
  • 編輯(非)通用型別的現有(靜態,範例)方法
  • 編輯(非)通用型別的現有(靜態,範例)通用方法

【英文】使用 System.ServiceModel 6.0 呼叫 WCF/CoreWCF 的使用者端支援就在這裡! - .NET 部落格

https://devblogs.microsoft.com/dotnet/wcf-client-60-has-been-released/

釋出 System.ServiceModel 6.0,這是一個呼叫 WCF/CoreWCF 的 WCF 使用者端。

System.ServiceModel 是 Microsoft 支援的 WCF 使用者端庫。

此版本包括新增 NetNamedPipe 支援、刪除 .NET Standard 和 .NET Framework 支援以及棄用 System.ServiceModel.Duplex 和安全性的更新。

【英文】ReSharper 和 Rider 2023.1.2 – 釋出了更多錯誤修復 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/05/17/rsrp-and-rider-2023-1-2-bug-fixes/

ReSharper 和 Rider 2023.1.2 釋出。

此版本修復了各種錯誤。

【英文】Xamarin.Forms 和 Essentials 現在以 Android 13(預覽版)為目標 - Xamarin 部落格

https://devblogs.microsoft.com/xamarin/xamarin-forms-essentials-target-android13-preview/

Xamarin.Forms 和 Essentials 現在可以面向 Android 13(預覽版)。

.NET 和 .NET MAUI 已經支援 Android 13。

【英文】在 Build 2023 上為 Visual Studio 做好準備:加入數以萬計的線上人群!- Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/get-ready-for-visual-studio-at-build-2023-join-tens-of-thousands-online/

在 5 月 23 日至 25 日的 Microsoft Build 2023 上介紹與 Visual Studio 相關的會議。

文章、幻燈片等

【英文】ML.NET 模型生成器中的物件檢測 - .NET 部落格

https://devblogs.microsoft.com/dotnet/object-detection-ml-dotnet-model-builder/

使用 ML.NET 模型生成器進行物件檢測的介紹。

【英文】.NET 中的 ChatGPT 入門 - .NET 部落格

https://devblogs.microsoft.com/dotnet/get-started-chatgpt-azure-dotnet/

使用 .NET 中的 OpenAI API 的系列。 ChatGPT(聊天和提示)的描述。

【英文】Sticky Scroll:保持在正確的上下文中 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/sticky-scroll-stay-in-the-right-context/

介紹 Visual Studio 2022 17.6 中新增的粘性捲動功能。

【英文】在 .NET MAUI 上從零開始的日曆控制元件

https://dev.to/serhii_korol_ab7776c50dba/calendar-control-from-scratch-on-net-maui-5dh6

一篇關於使用 .NET MAUI 從頭開始​​建立日曆控制元件的文章。

【英文】使用 Octokit.GraphQL 與 GitHub 討論 API 互動

https://andrewlock.net/using-octokit-graphql-to-interact-with-the-github-discussions-api/

如何使用 Octokit.GraphQL NuGet 包的 GitHub 討論中的 API。

本文介紹瞭如何獲取和建立討論、速率限制等。

【英文】AWS 無伺服器解決方案的整合測試

https://dev.to/ohalay/integration-tests-for-aws-serverless-solution-12aj

如何在 AWS 無伺服器設定中整合測試您的應用程式。

它介紹瞭如何通過使用 LocalStack 執行本地容器來執行單元測試。

【英文】如何從外部應用程式控制 Visual Studio - Gérald Barré

https://www.meziantou.net/control-visual-studio-from-an-external-application.htm

如何通過 COM 獲取和操作 Visual Studio 範例。

【英文】編譯查詢在 C# EF Core 上真的有效嗎?

https://goatreview.com/are-compiled-queries-efficient-efcore/

關於 Entity Framework Core 的編譯查詢是否有效。

編譯查詢對某些模式有效,但有許多模式無效,因此我們建議在使用之前測試和檢查查詢本身。

【英文】.NET 8 中的並行託管服務啟動和停止 - Steve Gordon - Code with Steve

https://www.stevejgordon.co.uk/concurrent-hosted-service-start-and-stop-in-dotnet-8

.NET 8 的 Microsoft.Extensions.Hosting 並行啟動和停止主機。

本文解釋了並行化啟動和停止的影響以及如何禁用並行化。

【日文】從 .NET NuGet 包自動將全域性使用新增到您的應用程式

https://zenn.dev/nuits_jp/articles/2023-05-15-global-usings

如何建立在安裝時自動新增全域性使用的 NuGet 包。

【英文】Microsoft Build | 雲技能挑戰

https://www.microsoft.com/en-US/cloudskillschallenge/build/officialrules/2022

活動與 Build 2023 保持一致。完成挑戰後,您將有權參加一次免費的 Microsoft 認證考試。

庫、儲存庫、工具等。

drasticactions/LLaMAMaui

https://github.com/drasticactions/llamamaui

llama.cpp 中 .NET MAUI 的繫結。

https://twitter.com/drasticactions/status/1658867229637898240?s=12

站點、檔案等

【英文】簡介 - 面向 C#/.NET 開發人員的 Rust 檔案

https://microsoft.github.io/rust-for-dotnet-devs/latest/

面向 C#/.NET 開發人員的 Rust 檔案。

它解釋了 .NET 中的事物如何在 Rust 中表示。

推文

ClaimsPrincipal 偵錯程式上的顯示變得更好的故事。還支援其他 ASP.NET Core 型別。

https://twitter.com/jamesnk/status/1659366431920898049?s=12


AWS FOSS 基金贊助了 Avalonia UI。

https://twitter.com/dotnetaws/status/1658578068762394625?s=12


這個repo由一組規範的多種語言的Hello World靜態編譯(AOT)的程式和一個GitHub操作組成,該操作對它們進行編譯並彙總大小資訊。

https://twitter.com/MStrehovsky/status/1660256662975029248


https://twitter.com/KarenPayneMVP/status/1659904138858360832


https://twitter.com/EgorBo/status/1659555222677585922


https://twitter.com/DamianEdwards/status/1659963802400731141

深入探索

.NET 8.0 Preview 3 和 .NET 8 Preview 4 之間的 API 差異 by carlossanlop Pull Request #8469 dotnet/core

https://github.com/dotnet/core/pull/8469 .NET 8 Preview 3 到 4 API的區別

版權宣告

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.NET週報-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源專案可以下方的專案地址提交Issue或者在我的微信公眾號私信。

格式如下:

  • 10~50字左右的標題
  • 對應文章或專案網址存取連結
  • 200字以內的簡介,如果太長會影響閱讀體驗

https://github.com/InCerryGit/.NET-Weekly

.NET效能優化交流群

相信大家在開發中經常會遇到一些效能問題,苦於沒有有效的工具去發現效能瓶頸,或者是發現瓶頸以後不知道該如何優化。之前一直有讀者朋友詢問有沒有技術交流群,但是由於各種原因一直都沒建立,現在很高興的在這裡宣佈,我建立了一個專門交流.NET效能優化經驗的群組,主題包括但不限於:

  • 如何找到.NET效能瓶頸,如使用APM、dotnet tools等工具
  • .NET框架底層原理的實現,如垃圾回收器、JIT等等
  • 如何編寫高效能的.NET程式碼,哪些地方存在效能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET效能問題和寶貴的效能分析優化經驗。目前一群已滿,現在開放二群。

如果提示已經達到200人,可以加我微信,我拉你進群: lishi-wk

另外也建立了QQ群,群號: 264167610,歡迎大家加入。