.NET週刊【10月第3期 2023-10-22】

2023-10-26 12:02:00

國內文章

.NET 8 RC 2 釋出,將在11月14日釋出正式版

https://www.cnblogs.com/shanyou/p/17756172.html

微軟於2023年10月10日釋出了.NET 8 RC 2,預計在下個月的Net Conf 2023期間正式釋出.NET 8。.NET 8的所有主要新功能已經推出,開發團隊將在接下來的一個月內主要專注於改進功能和修復錯誤。此外,Tiobe程式語言排行榜顯示,C#的上升趨勢明顯,預計在大約兩個月內將超過Java。.NET團隊還在官方部落格上釋出了一系列文章,介紹.NET 8框架以及相關的ASP.NET Core、MAUI、EF Core、Visual Studio 2022 17.8的功能特性。

OpenTelemetry學習筆記-Trace

https://mp.weixin.qq.com/s/X-aiCMaVIzcz0lSM22jpfQ

文章是關於OpenTelemetry的學習筆記,主要介紹了以下內容:

  • OpenTelemetry是一個可觀測性的框架和工具包,目的是建立和管理遙測資料,如traces、metrics和logs。
  • OpenTelemetry有兩個重要的優勢:你可以擁有自己生成的資料,而不是被專有資料格式或工具;你可以學習一組API和約定。
  • OpenTelemetry中trace表示一組有序的事件,描述了分散式系統中一個操作的生命週期。每個trace由一系列的span組成,每個span描述了一個子任務或步驟。
  • OpenTelemetry中resource描述了程式正在消費的物理和虛擬資訊結構,包括一些基本資訊和設定設定。
  • OpenTelemetry提供了一套通用的server attributes,用於描述伺服器端的屬性。

.NET靜態程式碼織入——肉夾饃(Rougamo)釋出2.0

https://www.cnblogs.com/nigture/p/17753498.html

"肉夾饃"是一種實現AOP的元件,主要特點是在編譯時完成AOP程式碼織入,減少應用啟動的初始化時間,提高服務可用性,還能對靜態方法進行AOP。2.0版本推出了新功能,包括部分織入,使用者可以根據需要選擇使用的功能,避免無形中增加目標程式集的大小,提高執行效率。例如,如果只想在方法執行成功或失敗時執行紀錄檔操作,不需要重寫引數、修改返回值或處理異常,可以通過重寫Features屬性來選擇使用到的功能。

.NET高效能開發-點陣圖索引(一)

https://www.cnblogs.com/InCerry/p/dotnet-bitmap-index-part-1.html

本文主要討論瞭如何使用.NET構建記憶體點陣圖索引優化搜尋引擎計算速度。以機票搜尋為例,由於航班資料量大且實時變動,傳統資料庫無法滿足實時搜尋需求。業界解決方案是將資料載入到記憶體進行計算,但如何在短時間內處理大量資料仍是挑戰。文章提出了使用點陣圖索引的方法,通過構建和使用點陣圖索引,可以優化搜尋引擎的計算速度。文章還將深入討論點陣圖索引的效能,如何通過SIMD加速點陣圖索引的計算,以及構建高效的Bitmap記憶體索引庫等問題。

WPF 筆跡演演算法 從點集轉筆跡輪廓

https://www.cnblogs.com/lindexi/p/17758666.html

本文介紹了筆跡演演算法,這是一種基礎數學演演算法,可以將使用者輸入的點集(如滑鼠軌跡點或觸控軌跡點)轉換為可在介面上繪製顯示的筆跡畫面。雖然本文以WPF的筆跡演演算法為例,但其基礎數學計算理論上適用於任何支援幾何繪製的UI框架。文章從簡單到複雜描述了筆跡演演算法,包括最簡單的筆跡軌跡演演算法,即通過建立一條几何圖形(如折線)來構建筆跡軌跡。

【原始碼解讀(一)】EFCORE原始碼解讀之建立DBContext查詢攔截

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

本文主要講解了EFCore原始碼的一些關鍵部分。首先,文章解釋了AddDbContext的作用,它是EFCore提供的幾種擴充套件方法之一,用於設定DbContext和DBContextOption的生命週期。如果DBContext的生命週期是單例,Option的生命週期也應設定為單例。如果設定Option的委託不為空,那麼DBContext的建構函式必須有一個引數。此外,文章還介紹瞭如何在EFCore的服務中獲取Web注入的服務,攔截查詢的方式,使用快取查詢方法提升效能,以及如何託管EFCORE的IOC容器等內容。

使用 OpenTelemetry 構建 .NET 應用可觀測性(4):ASP.NET Core 應用中整合 OTel

https://www.cnblogs.com/eventhorizon/p/17760641.html

本文介紹瞭如何在ASP.NET Core應用中整合OTel SDK,並使用elastic構建可觀測性平臺展示OTel的資料。elastic提供了一套完整的可觀測性平臺,並支援OpenTelemetry protocol (OTLP)協定。elastic apm部署相對複雜,可以參考elastic的官方檔案進行部署或直接購買elastic cloud。為了方便學習,作者提供了一個elastic的docker-compose檔案,包含了elasticsearch、kibana、apm-server和fleet-server等元件。啟動完成後,還需要一些設定才能啟用apm-server。

4款.NET開源的Redis使用者端驅動庫

https://www.cnblogs.com/Can-daydayup/p/17760613.html

本文推薦了四款.NET開源免費的Redis使用者端驅動庫。Redis是一個開源的NoSQL資料庫。NewLife.Redis是一個以高效能處理巨量資料實時計算為目標的Redis使用者端元件,支援.NETCore/.NET4.0/.NET4.5。csredis是.NET Core或.NET Framework 4.0+的Redis使用者端,支援同步和非同步使用者端。FreeRedis是基於.NET的Redis使用者端,支援.NET Core 2.1+、.NET Framework 4.0+以及Xamarin。StackExchange.Redis是一個基於.NET的高效能Redis使用者端,提供了完整的Redis資料庫功能支援,並且具有多節點支援、非同步程式設計模型、Redis叢集支援等特性。此外,還介紹了DotNetGuide技術交流群,提供.NET開發者分享自己優質文章的群組和獲取更多全面的C#/.NET/.NET Core學習資料、視訊、文章、書籍,社群組織,工具和常見面試題資源。

.NET微服務系列之Saga分散式事務案例實踐

https://www.cnblogs.com/linguicheng/p/17728458.html

本文主要分享了使用Wing進行Saga分散式事務的實踐案例,以「跨行轉賬」為例。假設有「中國農業銀行」和「中國工商銀行」的賬戶,需要從農業銀行轉賬1000元到工商銀行。這個過程被分為兩個事務單元處理:1. 當前賬戶扣減1000元,定義一個事務單元的資料傳輸模型和實現類。如果事務策略是「向前恢復」,則只需實現「Commit」方法,否則還需實現「Cancel」方法。

.NET 8 候選版本 2 (RC2) 現已可用

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

".NET 8 候選版本 2 (RC2)已經發布,包含了許多ASP.NET Core的新改進。這是今年晚些時候釋出的最終.NET 8版本之前的最後一個候選版本,大部分計劃中的功能和更改都已包含在此版本中。新功能包括伺服器和中介軟體的HTTP紀錄檔擴充套件性和更新到IdentityModel 7x,API創作中的表單檔案支援,SignalR的Typescript使用者端有狀態重新連線支援,以及Blazor的多項改進。要開始使用.NET 8 RC2中的ASP.NET Core,需要安裝.NET 8 SDK。如果在Windows上使用Visual Studio,建議安裝最新的Visual Studio 2022預覽版。如果使用的是Visual Studio Code,可以嘗試新的C# Dev Kit。"

Util應用框架 7.x 來了

https://www.cnblogs.com/xiadao521/p/Util-7x.html

Util是一個.Net平臺的應用框架,旨在提升中小團隊的開發能力。最新版本7.x與.Net最新穩定版本同步更新,程式碼經過完全重寫,提升了模組化程度,增加了對在地化、多租戶等需求的支援。Util使用NgZorro作為UI基礎元件庫,封裝了NgZorro絕大部分元件,並對常用功能進行擴充套件。新版本還整合和封裝了Dapr微服務架構的幾個常見構造塊,並開發了基於Razor引擎的簡易程式碼生成器。Util的所有專案發布時會在Github和Gitee進行同步更新。

Bridge 橋接模式簡介與 C# 範例【結構型2】【設計模式來了_7】

https://www.cnblogs.com/hnzhengfy/p/SJMSLL_Bridge.html

本文介紹了橋接模式,這是一種結構型設計模式,通過將抽象與實現分離,實現鬆耦合。橋接模式可以使抽象和實現獨立擴充套件,不會相互影響。例如,學生和餐品可以看作兩個變化的類,老師就像橋接模式中的橋,學生想吃什麼套餐,可以通過老師來對應到具體的套餐類別。橋接模式的優點包括分離抽象介面及其實現部分,提高系統的可延伸性,減少子類的個數。但使用橋接模式會增加系統的理解與設計難度,且使用範圍具有一定的侷限性。在遊戲開發、網路程式設計、圖形介面開發等場景中,橋接模式都有實際應用。

Semantic Kernel .NET SDK 的 v1.0.0 Beta1 釋出

https://www.cnblogs.com/shanyou/p/17758153.html

Semantic Kernel(SK)是一個開源的SDK,將大型語言模型與流行的程式語言相結合,支援Java、Python和C#。它提供了新增記憶體和AI服務的聯結器,支援來自不同提供商的外掛,簡化了AI服務的整合。SK的.NET SDK的v1.0.0 Beta1已釋出,包括多項更改和改進,如將包和類從「技kill」重新命名為「外掛」,新增對多個AI模型的支援,重構規劃器和記憶體設定等。如果需要從0.24版本升級到v1.0.0 Beta1,需要更新NuGet包和程式碼。此外,本文還介紹瞭如何簡單地開始使用Semantic Kernel。

輕量通訊協定 --- MQTT

https://www.cnblogs.com/pandefu/p/17755762.html

本文介紹了MQTT(Message Queuing Telemetry Transport),這是一種輕量級的訊息傳輸協定,常用於物聯網和感測器網路中的通訊。MQTT的特點包括輕量級、釋出/訂閱模型、可靠性、持久對談、QoS(Quality of Service)和適應性。MQTT還提供了QoS機制,以確保訊息的可靠傳遞。此外,文章還介紹了MQTTnet,這是一個開源的、基於MQTT的通訊的高效能.NET庫。最後,文章介紹了Windows下的MQTT訊息伺服器的安裝使用,包括Mosquitto和EMQX兩種常見的MQTT伺服器軟體。

Skywalking APM監控系列(一丶.NET5.0+接入Skywalking監聽)

https://www.cnblogs.com/GuZhenYin/p/17757705.html

本文主要介紹了Skywalking的使用和部署。Skywalking是一款分散式鏈路追蹤元件,用於解決微服務架構中的問題,如服務故障定位、響應延遲原因分析、效能瓶頸定位等。Skywalking具有多種監控手段,支援多語言,輕量高效,模組化,並提供優秀的視覺化解決方案。文章還詳細介紹瞭如何通過Docker部署Skywalking和ES資料庫。

C#學習筆記--複雜資料型別、函數和結構體

https://www.cnblogs.com/TonyCode/p/17757597.html

本文介紹了C#的複雜資料型別,包括列舉、陣列和結構體。列舉是整型常數的集合,可以方便表示物件的各種狀態,例如怪物的種類、玩家的動作狀態等。陣列是儲存同一種特定變數型別的有序資料集合,可以是一維陣列或多維陣列。結構體是任意變數型別的資料組合成的資料塊。這些複雜資料型別在程式設計中有廣泛的應用,可以提高程式碼的可讀性和可維護性。

Asp-Net-Core開發筆記:EFCore統一實體和屬性命名風格

https://www.cnblogs.com/deali/p/17751279.html

本文介紹瞭如何在C#和資料庫中實現命名風格的轉換。在C#編碼規範中,類和屬性使用大寫駝峰命名,而資料庫通常使用小寫蛇形命名。FreeSQL內建了命名風格轉換功能,可以實現PascalCase到snake_case的轉換。而EFCore沒有這個功能,需要我們自行實現。我們可以使用正規表示式來實現這個功能,寫一個擴充套件方法,該方法會在每個小寫字母/數位與大寫字母之間新增下劃線,並把整個字串轉換為小寫。然後,我們可以重寫DbContext的OnModelCreating方法,對錶名、列名、key、index的名稱做轉換。

使用Docker buildx 為 .NET 構建多平臺映象

https://www.cnblogs.com/shanyou/p/17765247.html

.NET團隊的部落格介紹瞭如何使用Docker的buildx工具在.NET 7以上的平臺上構建多平臺映象。buildx是Docker的一個構建工具,可以快速、高效地構建Docker映象,並支援多種平臺的構建。使用者可以在單個命令中構建多種架構的映象,例如x86和ARM架構,而無需手動操作多個構建命令。buildx還支援Dockerfile的多階段構建和快取,這可以大大提高映象構建的效率和速度。要使用buildx,需要Docker Engine版本號大於等於19.03。使用buildx構建跨平臺映象,需要先建立一個builder。然後,可以使用一條命令構建跨平臺映象。

Composite 組合模式簡介與 C# 範例【結構型3】【設計模式來了_8】

https://www.cnblogs.com/hnzhengfy/p/SJMLLL_Composite.html

本文介紹了組合設計模式,這是一種針對樹形結構的設計模式,所有節點實現同一介面,具有相同的操作,可以遍歷全部節點。組合模式通過樹形結構組合物件,表示部分和整體層次,屬於結構型模式,多用於遞迴。優點包括高層模組呼叫簡單,節點自由,簡化了使用者端程式碼。缺點包括葉子節點可能繼承不需要的方法,組合類的參照開銷可能大,需要執行時判斷特殊元件。適用場景包括使用者端可以忽略組合物件與單個物件的差異,以及物件層次具備整體和部分,呈樹形結構。最後,文章提供了一個程式碼範例來解釋這個概念。

OpenSSL 生成 RootCA (根證書)並自簽署證書(支援 IP 地址)

https://www.cnblogs.com/aobaxu/p/17754721.html

本文介紹瞭如何在Ubuntu 22.04機器上生成HTTPS證書。首先,生成根CA的私鑰和證書。然後,為特定IP(例如10.12.0.2)生成私鑰和證書請求檔案。接著,建立證書擴充套件檔案以確保簽名的證書能用作伺服器身份驗證。最後,使用根CA的證書為特定IP簽名證書。此外,還介紹瞭如何在Ubuntu、CentOS和Windows上信任根CA的證書,以及如何在ASP.NET CORE應用中使用生成的證書。

為.NET開啟新大門:OpenVINO.NET開源專案全新發布

https://www.cnblogs.com/sdflysha/p/20231015-sdcb-openvino-net.html

本文介紹了OpenVINO.NET開源專案的全新發布。OpenVINO是Intel開發的一款開源工具包,用於優化深度學習模型並進行推理部署,支援跨不同的Intel硬體平臺。然而,對於.NET世界來說,OpenVINO的C API並沒有一個合適且高質量的封裝,因此作者開發了OpenVINO.NET專案。使用OpenVINO.NET的最簡單方法是使用作者釋出的NuGet包,包括Sdcb.OpenVINO和Sdcb.OpenVINO.runtime.win-x64等。作者還發布了一個基於Linux的映象sdflysha/openvino-base,用於減輕部署壓力。

詳解.NET依賴注入中物件的建立與「銷燬」

https://www.cnblogs.com/tenleft/p/17766501.html

本文主要介紹了DI容器如何建立和銷燬物件。DI容器可以註冊型別並建立其範例,如果型別實現了IAsyncDisposable或IDisposable介面,DI容器還會在適當的時候呼叫物件的DisposeAsync或Dispose方法。文章詳細解釋了DI容器中類的三種生命週期:Singleton(單例)、Scoped(區域性單例)和Transient(每次都建立新物件)。在ASP.NET CORE中,每次請求會建立一個Scope,生命週期為Scoped的類在一次請求中只會建立一次。最後,文章深入探討了ServiceProvider類在物件建立和銷燬過程中的關鍵作用。

【分段傳輸】c#使用IAsyncEnumerable實現流式分段傳輸

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

本文主要討論了使用C#的IAsyncEnumerable和ajax實現流式傳輸的方法。在使用SSE進行流式傳輸時,存在連線獨佔和資料格式固定的問題。而使用C#的IAsyncEnumerable可以解決這些問題,但返回的資料是在之前返回的基礎上進行累加,需要自己處理。文章中提供了一個使用ajax實現的例子,通過監聽請求的進度,可以獲取到每一次寫了哪些東西,從而實現流傳輸。同時,群友也提供了fetch的實現程式碼。

VS Code C# 開發工具包正式釋出

https://www.cnblogs.com/Can-daydayup/p/17780747.html

微軟正式釋出了Visual Studio Code C#開發工具包,經過四個月的測試和調整,修復了350多個問題,並進行了300多項改進。C#開發工具包旨在提高在VS Code中使用C#的工作效率,它與C#擴充套件協同工作,打造了一個高效能、可延伸且靈活的工具環境。該工具包由一組VS Code擴充套件組成,提供豐富的C#編輯體驗、AI驅動的開發、解決方案管理和整合測試。C#開發工具包的釋出,提升了.NET的開發和工作效率。

Avalonia 實現視訊聊天、遠端桌面(原始碼,支援Windows、Linux、國產OS)

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

本文介紹了基於.NET Core的跨平臺UI框架Avalonia,它可以執行在任何支援.NET Core的平臺上,包括Windows和Linux等。作者以一個視訊聊天的Demo為例,展示了Avalonia的應用,該Demo支援視訊聊天和遠端桌面功能。使用者可以向其他線上使用者傳送視訊聊天或遠端桌面請求,接受或拒絕其他使用者的請求,開啟視訊聊天或遠端桌面連線,也可以主動斷開連線。該Demo的開發環境包括Visual Studio 2022,.NET Core 3.1和C#語言。

字串 - 不可變性與駐留池

https://www.cnblogs.com/pandefu/p/17771369.html

本文主要討論了字串的效能優化,特別是StringBuilder和字串駐留池的使用。StringBuilder由於其可變性,可以在原地修改字串,避免了頻繁的記憶體分配和回收,提高了效能。而字串駐留池則是一種記憶體管理機制,它儲存了字串字面值的唯一範例,減少了記憶體使用並提高了效能。字串的不可變性使得多個字串字面值可以共用相同的記憶體範例,節省記憶體。此外,字串駐留池的存在還帶來了記憶體節省、效能提升、可靠性和程式碼簡化等優點。

如何通過SK整合ChatGPT實現DotNet專案工程化?

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

本文介紹瞭如何實現智慧助手服務的天氣外掛。首先,我們需要了解SemanticKernel,它是一個SDK,將大型語言模型與傳統程式語言整合在一起。然後,我們需要在專案中新增IKernel,OpenAIOptions.Model和OpenAIOptions.Key。在專案中,我們還有一個plugins資料夾,這是提供的外掛目錄。在BasePlugin目錄下,有一個識別意圖的外掛。此外,config.json對應當前外掛的一些引數設定,skprompt.txt則是當前外掛使用的prompt。最後,我們需要注入IKernel。

[MAUI]深入瞭解.NET MAUI Blazor與Vue的混合開發

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

本文介紹瞭如何在.NET MAUI中結合Vue進行混合開發,使得開發者可以使用熟悉的Vue語法,而無需重寫現有專案。文章詳細闡述瞭如何建立MAUI專案和Vue應用,並將Vue作為MAUI的一部分,使得在MAUI專案中可以直接使用Vue。同時,Vue的漸進性特性使得開發者可以根據需要逐步使用其框架特性。此外,文章還介紹瞭如何使用element-ui元件庫,以及JavaScript和原生程式碼的互動方式。

記一次 .NET某新能源檢測系統 崩潰分析

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

本文描述了一位朋友的程式偶爾會崩潰,作者使用WinDbg工具進行分析。通過命令!analyze -v,作者發現崩潰點異常,且異常狀態80000004在微軟官方檔案中顯示為單步跟蹤造成,這是作者首次遇到的情況。儘管自動化分析的資訊不盡人意,但作者根據經驗,檢視了異常前的狀態,尋找新的線索。

通過 Radius 實現Dapr 雲原生應用程式開發共同作業

https://www.cnblogs.com/shanyou/p/17775795.html

微軟Azure孵化團隊推出了名為Radius的新開放應用程式平臺,這是一個開源專案,支援在私有云、Microsoft Azure和Amazon Web Services上部署應用程式。該團隊還推出了多個流行的開源專案,如Dapr、KEDA和Copacetic,這些都是雲原生計算基金會(CNCF)專案。Dapr是一個分散式應用程式執行時,為開發現代應用程式提供了新方法,可以安裝在任何可以執行Docker的計算機上。然而,基於Dapr開發的應用程式的構建、管理和運營存在挑戰。為此,微軟Azure孵化團隊釋出了Radius,該平臺將應用程式置於每個開發階段的中心,重新定義應用程式的構建、管理與理解方式。

探究 - C# .NET 程式碼混淆/加殼

https://www.cnblogs.com/magicMaQaQ/p/17702951.html

本文介紹瞭如何使用Obfuscar工具進行.NET程式碼混淆。首先,通過NuGet在專案中安裝Obfuscar。然後,找到Obfuscar.Console.exe並將其複製到需要加密的資料夾中。最後,建立一個名為Obfuscar.xml的檔案,設定相關引數,如輸入路徑、輸出路徑和是否保留公共API等。通過這種方式,可以有效地保護.NET程式碼,防止被輕易閱讀和修改。

IL編織器 - Fody

https://www.cnblogs.com/pandefu/p/17775991.html

"Fody"是一個用於.NET程式集的可延伸工具,它可以在構建過程中操縱程式集的中間語言(IL)。Fody通過可延伸的外掛模型消除了大量需要了解MSBuild和Visual Studio的API的底層程式碼。Fody使用Mono.Cecil和基於外掛的方法在編譯時修改.NET程式集的IL,不需要額外的安裝步驟來構建,不需要部署執行時依賴項。此外,基於Fody庫,誕生了許多外掛庫,如AutoProperties.Fody,PropertyChanged.Fody,InlineIL.Fody等,為使用者提供了更多的功能和便利。

.NET開源簡單易用、內建整合化的控制檯、支援永續性儲存的任務排程框架 - Hangfire

https://www.cnblogs.com/Can-daydayup/p/17766499.html

本文介紹了.NET開源任務排程框架Hangfire。Hangfire是一個簡單易用的庫,可以在.NET應用程式中執行後臺的、延遲的和定期的任務,無需使用Windows服務或任務計劃程式。它具有簡單易用、可靠性強、高效能、擴充套件性好、持久化儲存、任務監控和多種任務型別支援等特點。Hangfire可以與Redis、SQL Server、SQL Azure和MSMQ整合,提供了多種持久化儲存方案。此外,Hangfire還提供了多種監控工具,可以實時檢視任務的執行情況、錯誤資訊、效能指標等。

Util應用框架Web Api開發環境搭建

https://www.cnblogs.com/xiadao521/p/17769405.html

本文主要介紹瞭如何使用Util應用框架開發專案,包括搭建開發環境和安裝Visual Studio企業版。首先,需要安裝Windows 10或以上版本的作業系統,然後下載並安裝Visual Studio企業版,過程中需要聯網。安裝完成後,需要重啟電腦。然後,開啟Visual Studio,建立一個Web Api專案,以驗證Visual Studio是否安裝成功。在建立專案時,選擇ASP.NET Core Web API專案型別,框架選擇.Net 7.0。

C# 實現MD5加密

https://www.cnblogs.com/yangyongdashen-S/p/YiRenXiAn_CSharp_MD5.html

本文介紹了在C#中使用MD5進行資料加密的方法。MD5是一種hash演演算法,可以對任意長度的資料進行加密,生成固定長度的訊息摘要,且加密結果不可逆。在C#中,可以使用MD5CryptoServiceProvider和MD5兩種型別進行MD5加密,但在.NET6及以上版本中,MD5CryptoServiceProvider已過時,建議使用MD5。加密後的資料可以通過BitConverter方法或迴圈位元組陣列轉成字串的方式轉換為32位元數位和字母組成的字串。此外,檔案、圖片等其他資料也可以轉換成位元組陣列進行加密。完整的幫助類已上傳至Gitee,可供下載使用。

再學Blazor - 擴充套件方法

https://www.cnblogs.com/known/p/17766595.html

本文主要介紹了Blazor元件的擴充套件方法實現思路。擴充套件方法是C#型別新增新方法的一種方式,可以對任何型別進行擴充套件,只需新建一個擴充套件型別。擴充套件方法需要新增擴充套件類和方法,都必須宣告static修飾符,方法的第一個引數必須是擴充套件型別,並有this關鍵字。文章還介紹瞭如何擴充套件HTML元素和自定義元件,以及如何使用RenderTreeBuilder的原生方法。最後,文章提供了一個HTML元素擴充套件類的程式碼範例,用於擴充套件HTML元素。

一款簡單漂亮的WPF UI - AduSkin

https://www.cnblogs.com/Can-daydayup/p/17778563.html

本文推薦了一款簡單漂亮的WPF UI庫——AduSkin。WPF是一個強大的桌面應用程式框架,用於構建具有豐富使用者介面的Windows應用。AduSkin是一款融合多個開源框架元件的WPF UI,為個人客製化的UI,可供學者參考和使用。在Nuget搜尋"AduSkin"即可直接導包使用。更多專案實用功能和特性,可以前往專案開源地址檢視。此外,該專案已被收錄到C#/.NET/.NET Core優秀專案和框架精選中。

主題

.NET 2023 年 10 月更新 – .NET 7.0.12、.NET 6.0.23 - .NET 部落格

https://devblogs.microsoft.com/dotnet/october-2023-updates/

.NET 7 和 6 的 2023 年 10 月更新已釋出。

此版本包括多個錯誤修復和改進以及三個安全修復。

宣佈 .NET 8 候選版本 2 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc2/

.NET 8 候選版本 2 已釋出。

  • .NET 庫包讀我檔案
  • MSBuild+ 基於 CLI 的簡單專案評估
  • SDK容器釋出:釋出到tar.gz存檔
  • .NET 的張量基元簡介

.NET 8 候選版本 2 中的 ASP.NET Core 更新 - .NET 部落格

https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-2/

關於使用 .NET 8 候選版本 2 更新 ASP.NET Core。

  • 伺服器和中介軟體
    • HTTP 紀錄檔記錄可延伸性
    • 更新到 IdentityModel 7x
  • API 編寫
    • 支援具有新表單繫結的表單檔案
    • SignalR
    • 對 TypeScript 使用者端的狀態重新連線支援
  • Blazor
    • 與 Blazor Web Apps 的全球互動
    • Blazor WebAssembly 模板更新
    • 檔案範圍@rendermode Razor指令
    • 增強的導航和表單處理改進
    • 當互動式伺服器元件消失時連線斷開
    • 改進的表單模型繫結
    • 將 HttpContext 作為級聯引數存取
    • Blazor Web 應用程式中的持久元件
    • 將金鑰服務注入元件
    • 支援對話方塊取消和關閉事件
    • 錯誤頁面支援
    • 身份
    • Blazor 身份使用者介面
    • 單頁應用程式(SPA)
    • 從命令列執行新的 SPA 模板

EF Core 8 候選版本 2:EF8 中的較小功能 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-ef8-rc2/

介紹 Entity Framework Core 8 候選版 2 的釋出以及 EF Core 8 中的新功能。

  • 哨兵值和資料庫預設值
  • 更好的執行更新和執行刪除
  • 更好地使用「IN」查詢
  • SQL Azure/SQL Server 中的數位行版本
  • 消除括號

在 .NET 8 候選版本 2 中宣佈 .NET MAUI:更高質量 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-rc-2/

關於 .NET 8 候選版本 2 中的 .NET MAUI 更新。

除了介紹此版本中的質量改進之外,文章還提到了針對 .NET 7 的 .NET MAUI 服務版本 8 的釋出以及與 Xcode 15 和 Android 14 的相容性。

.NET Framework 2023 年 10 月安全和質量彙總更新 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-framework-october-2023-security-and-quality-rollup-updates/

.NET Framework 的 2023 年 10 月安全修復程式和累積更新已釋出。

此版本不包含任何新的安全修復,但包含一些錯誤修復。

VMMap v3.4 - Microsoft 社群中心

https://techcommunity.microsoft.com/t5/sysinternals-blog/vmmap-v3-4/ba-p/3958601VMMap v3.4 已釋出。

VMMap是Windows上的記憶體分析工具。此版本還支援 .NET 6 到 8。

https://x.com/sysinternals/status/1714731087119675416?s=12

ASP.NET Core 8 中的效能改進 - .NET 部落格

https://devblogs.microsoft.com/dotnet/performance-improvements-in-aspnet-core-8/

關於 .NET 8 候選釋出版 2 中的 ASP.NET Core 效能改進。

  • 伺服器
    • Kestrel
    • HTTP.sys
  • 原生AOT
  • 請求委託生成器
  • 執行時 API
    • SearchValues
    • Span
    • FrozenDictionary
  • 其他
    • 正規表示式
    • 分析儀
    • 字串生成器

Visual Studio 2022 17.8 預覽版 3 現已推出!- Visual Studio 部落格

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

Visual Studio 2022 17.8 預覽版 3 已釋出。

  • 生產力
    • Visual Studio更新通知
  • C++ 遊戲開發
    • 虛幻引擎宏說明符建議
    • 結構化診斷
  • 將 SQL Server Data Tools 從 MDS 3.0 升級到 MDS 5.0

Visual Studio 中的 F# 程式碼修復大修 - .NET 部落格

https://devblogs.microsoft.com/dotnet/overhauled-fsharp-code-fixes-in-visual-studio/

在 Visual Studio 中修復 F# 程式碼的改進。

.NET Conf 2023 議程

https://www.dotnetconf.net/agenda

.NET Conf 2023 的時間表/會議列表已釋出。

https://x.com/dave_dotnet/status/1711432833594532083?s=12

釋出版本 v2.58.0 · grpc/grpc-dotnet

https://github.com/grpc/grpc-dotnet/releases/tag/v2.58.0

gRPC (grpc-dotnet) v2.58.0 已釋出。

此版本包括多個錯誤修復、偵錯改進以及從某些專案中刪除 .NET Standard 1.5。

文章、幻燈片等

使用 .NET MAUI 和 Evergine 構建 3D 應用程式和內容 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-maui-3d-app-with-evergine/

介紹如何組合 .NET MAUI 和 Evergine 以在 .NET MAUI 應用程式之上託管 3D。

在 .NET 專案中使用 Stryker 進行突變測試

https://medium.com/@hamed.shirbandi/mutation-testing-with-stryker-in-net-projects-ff1f05ddce8f

瞭解如何使用 Stryker 在 .NET 專案中執行突變測試。

使用 Husky.NET 進行預提交掛鉤 - 在 Git 提交之前構建、格式化和測試您的 .NET 應用程式

https://www.code4it.dev/blog/husky-dotnet-precommit-hooks/

介紹如何使用 Git 提交掛鉤通過 Husky.NET 進行構建、測試、格式化等。

混合 C# 和 Rust - 互操作

https://fractalfir.github.io/generated_html/rustc_codegen_clr_v0_0_3_2.html

有關為 Rust 開發針對 .NET 的後端的系列。本文涉及實現和考慮如何從 Rust 呼叫 .NET。

C# 中雙精度數的記憶體對齊

https://minidump.net/memory-alignment-of-doubles-in-c-1d13e3ce741

深入研究 .NET 中的雙精度(64 位浮點)陣列記憶體對齊。

如何在 EF Core 中將 UTC 儲存的日期和時間轉換並顯示為 JST

https://zenn.dev/hat_kotap/articles/785960b233e5f0

如何使用 Entity Framework Core 和 PostgreSQL 在資料庫中儲存 UTC 日期和時間,並在顯示時將其顯示為 JST。

Rider 2023.3 EAP 3:全域性使用支援的改進等等。| .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/10/17/rider-2023-3-eap-3/

Rider 2023.3 EAP 3 已釋出。

此版本包括改進的對全域性使用的支援、對無根容器的支援、改進的 HTTP 使用者端中的 JSON 請求正文完成、URL 路徑參照的自動程式碼完成、AI 助手外掛的更新等等。

.NET 8 中 Docker 映像的更新:探索 .NET 8 預覽版 - 第 10 部分

https://andrewlock.net/exploring-the-dotnet-8-preview-updates-to-docker-images-in-dotnet-8/

使用 .NET 8 更新的 Docker 映像的詳細說明。

RazorSlices - 使用 ASP.NET Core 最小 API 的 Razor 檢視

https://khalidabuhakmeh.com/razorslices-razor-views-with-aspnet-core-minimal-apis

引入 RazorSlices,它允許您通過最少的 API 使用 Razor,而無需依賴 ASP.NET Core MVC 或 Razor Pages。

更好地檢視 Visual Studio 活動紀錄檔

https://dev.to/karenpayneoregon/view-visual-studio-activity-logs-better-2id8

如何檢索和檢視 Visual Studio 本身的活動紀錄檔。

使用 Scrutor 改進 ASP.NET Core 依賴注入

https://dev.to/milanjovanovictech/improving-aspnet-core-dependency-injection-with-scrutor-48e3

如何使用 Scrutor 來處理 ASP.NET Core 的依賴注入,它擴充套件了 Microsoft.Extensions.DependencyInjection。

.NET Conf 2023 上的 Visual Studio 創新:節省時間 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-innovations-at-net-conf-2023-save-the-date/

請注意,.NET Conf 2023 上將介紹 Visual Studio。

C# 13 的計劃

https://ufcpp.net/blog/2023/10/triage2023/

關於 C# 13 的最近分類。

將 Blazor 元件渲染為字串:探索 .NET 8 預覽 - 第 9 部分

https://andrewlock.net/exploring-the-dotnet-8-preview-rendering-blazor-components-to-a-string/

瞭解如何使用 .NET 8 中新增的 HtmlRenderer 將 Blazor 元件呈現為字串。

更新到預覽版 3 (VS 2022 17.8) 後,MSFT_VSInstance 類從 WMI 目錄中刪除

https://developercommunity.visualstudio.com/t/MSFT_VSInstance-class-removed-from-WMI-c/10489629

關於從 Visual Studio 2022 17.8 Preview 3 中的 WMI 目錄中刪除 MSFT_VSInstance。要繼續使用它,您需要指定一個名稱空間。

https://x.com/skitoy4321/status/1714857655154651192?s=12

Wrathmark:有趣的計算工作負載(第 1 部分)

https://ricomariani.medium.com/wrathmark-an-interesting-compute-workload-part-1-47d61e0bea43

按版本比較本機和 .NET JIT 效能。

庫、儲存庫、工具等。

microsoft/vs-dapr:在 Visual Studio 中檢視、管理和診斷 Dapr 服務。

https://github.com/microsoft/vs-dapr

在 Visual Studio 中支援(檢視、管理和診斷)Dapr 的擴充套件。

由於它正在開發中,目前尚未從 Visual Studio Marketplace 分發。

Cysharp/Utf8StringInterpolation:ZString 的後繼者;基於 UTF8 的零分配高效能字串插值和 StringBuilder。

https://github.com/Cysharp/Utf8StringInterpolation

一個用於高效生成 UTF-8 字串的庫,主要使用字串完成表示式。

https://x.com/neuuecc/status/1711911200274153689?s=12

網站、檔案等

推文

https://x.com/chnasarre/status/1710940207950733496?s=12

版權宣告

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

格式如下:

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

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

.NET效能優化交流群

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

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

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

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

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

抽獎送書活動預熱!!!

感謝大家對我公眾號的支援與陪伴!為慶祝公眾號一週年,抽獎送出一些書籍,請大家關注公眾號後續推文!