.NET周報【10月第3期 2022-10-25】

國內文章

聊一聊被 .NET程序員 遺忘的 COM 組件

//www.cnblogs.com/huangxincheng/p/16799234.html

將Windows編程中經典的COM組件拿出來再複習一下,解釋了COM組件互相調用的原理。

使用 C# 開發的輕量級開源數據庫 LiteDB

//mp.weixin.qq.com/s/xz7T_aMaHeybHWz5byD0wg

介紹一個開源的數據庫組件,LiteDB 是一個小型、快速、輕量級的 .NET NoSQL 嵌入式數據庫。

.NET性能優化-使用結構體替代類

//mp.weixin.qq.com/s/11Tszw-Sa1rQq5Zka7g08Q

通過一個案例,講述如果使用結構體來替代類,從而優化程序的內存佔用和運行速度;並介紹其性能優化的原理。

.NET性能優化-使用Collections.Pooled

//mp.weixin.qq.com/s/wGNLL0C9UTwaT2TTFv2rDg

講述如何通過Collections.Pooled復用內存,降低GC和提升性能的故事,並比較了和普通集合類型的差別。

.NET性能系列文章一:.NET7的性能改進

//mp.weixin.qq.com/s/F5qWGMRmRc_ZkXqwbsjG5w

主要講述了哪一些API在.NET7中變得更快,比如LINQ中的Max()、Min()等等。

.NET 6.0 抓取包開源工具WindivertDotnet

//mp.weixin.qq.com/s/IdkuAAWzjKnV7kYAWimCHw

WindivertDotnet是面向對象的WinDivert的dotnet異步封裝,其保持着完整的底層庫能力,又提供dotnet的完美語法來操作。

.NET Core 開發跨平台服務器性能監控工具

//mp.weixin.qq.com/s/H8VFDb3E3S3WodYYX_hCPA

介紹一個基於C#開發的、跨平台,監控GC、CPU、內存、機器網絡、磁盤空間等關鍵指標的工具。

Uno開發的小遊戲

//mp.weixin.qq.com/s/H-Vl2k3f3MkqVBn5tZZauQ

介紹使用Uno開發的WebAssembly小遊戲

記一次 .NET 某金融企業 WPF 程序卡死分析

//mp.weixin.qq.com/s/pj4LxG9hfUBkI4g8CTvsSg

介紹了一個作者前段時間遇到了一個難度比較高的Dump分析過程。

dotnet 用 SourceGenerator 源代碼生成技術實現中文編程語言

//www.cnblogs.com/lindexi/archive/2022/10/19/16804899.html

介紹了如何使用.NET的SourceGenerator技術實現一個中文編程語言,非常有趣的一個實現。

細聊.Net Core中IServiceScope的工作方式

//www.cnblogs.com/wucy/archive/2022/10/17/16791563.html

通過源碼詳細的解析了IServiceScope的工作方式。

主題

宣布在.NET7 RC2中支持.NET MAUI – .NET Blog

//devblogs.microsoft.com/dotnet/dotnet-maui-rc2/

對.NET 7 RC 2的.NET MAUI支持已經發佈。

該版本包括對Xcode 14 for iOS 16的支持,並可在Visual Studio 17.4 Preview 4中使用。 這個版本也支持在生產環境中使用。

OpenSilver 1.1 發佈!

//www.opensilver.net/announcements/opensilver1-1.aspx

OpenSilver的1.1版本已經發佈,這是一個運行在WebAssembly上的開源實現,旨在實現Silverlight兼容性。

該版本增加了對100多個Silverlight功能的支持,增加了對包括Telerik UI在內的各種第三方庫的支持,並將性能提高了3倍。

此外,計劃於明年初發佈的2.0版本將增加對VB.NET的支持。

今天發佈:Windows Dev Kit 2023又名Project Volterra – Windows Developer Blog

//blogs.windows.com/windowsdeveloper/2022/10/24/available-today-windows-dev-kit-2023-aka-project-volterra/

適用於Arm架構的Windows開發套件現在已經上市,名稱為Windows Dev Kit 2023。

Windows Dev Kit 2023是在Build 2022中以Project Volterra的名義宣布的一個開發者套件,具有驍龍8cx第三代,32GB內存和512GB NVMe SSD。

從今天起,澳大利亞、加拿大、中國、法國、德國、日本、英國和美國都可以訂購。 在日本,價格將是99,880日元(含稅)。

發佈 Diagnostics – v6.0.351802 · dotnet/diagnostics

//github.com/dotnet/diagnostics/releases/tag/v6.0.351802

dotnet-{dump,monitor,trace}(診斷程序)的 6.0.351802 已經發佈。

它包括dotnet-dump中的一些錯誤和改進,包括在Linux/MacOS上擴展SOS命令。dotnet-monitor和dotnet-trace有錯誤修復。

對舊版Visual Studio的支持提醒 – Visual Studio Blog

//devblogs.microsoft.com/visualstudio/support-reminder-for-older-versions-of-visual-studio/

關於Visual Studio的提醒,它將不再被支持。

  • Visual Studio 2012:擴展支持於2023年1月10日結束
  • Visual Studio 2013:擴展支持於2024年4月9日結束
  • Visual Studio 2015:擴展支持於2025年10月14日結束
  • Visual Studio 2017:主流支持於2022年4月12日結束,擴展支持於2027年4月13日結束(15.9)。
  • Visual Studio 2019(16.9):支持於2022年10月11日結束。 建議遷移到16.11以繼續支持2019年的工作
  • Visual Studio 2019預覽版:由於更新結束,建議遷移到發佈頻道或遷移到2022年的預覽頻道

文章還討論了一些方面,如管理員如何管理更新和刪除不再支持的組件。

文章、幻燈片等

你好 .NET! – AtomicJar

//www.atomicjar.com/2022/10/hello-dotnet/

由Testcontainers的.NET實現的維護者(他們來自AtomicJar)介紹Testcontainers。

在這裡,我們將介紹Testcontainers的.NET實現、資源庫的增長以及與xUnit.net整合的例子。

dotnet-monitor: 在AKS中啟用一個診斷邊車

//www.poppastring.com/blog/dotnetmonitor-enabling-a-diagnostics-sidecar-in-aks

關於如何在AKS(Azure Kubernetes Serivce)Pod中作為邊車運行dotnet-monitor的視頻。

艱辛歷程中學習到的.NET系統編程.pptx

//www.slideshare.net/petabridge/net-systems-programming-learned-the-hard-waypptx

由Akka.NET開發人員提供的關於.NET低級組件API的解釋性幻燈片。

[C#]使用MemoryPack – 基礎知識1 | spacekey.dev

//spacekey.dev/memorypack-1

使用二進制序列化工具MemoryPack的系列文章

CLR 事件: 選擇nettrace文件格式!

//chnasarre.medium.com/clr-events-go-for-the-nettrace-file-format-6b363364c2a3

關於如何在nettrace二進制流中接收來自CLR的診斷事件的文章。

使用WSL和Rider的ASP.NET/Kubernetes開發 (1)

//zenn.dev/dynamitecoolguy/articles/4530e1134bcbac

文章描述了在WSL上運行Rider以及使用ASP.NET Core和Kubernetes進行開發的準備步驟。

使用.NET 6 + Hot Chocolate v12 + Redis實現GraphQL API網關

//dianper.medium.com/implementing-graphql-api-gateway-in-net-6-hot-chocolate-v12-redis-1a0ac12f340c

關於如何使用.NET 6、Hot Chocolate v12和Redis實現GraphQL API網關的文章。

為你的.NET項目編寫你自己的代碼覆蓋統計腳本

//medium.com/@stefanacimovicMEng/write-your-own-code-coverage-script-for-your-net-projects-e26b621aa0dc

關於如何創建自己的一系列步驟以獲得.NET項目的代碼覆蓋並輸出報告的文章。

ASP.NET Core中的自定義腳手架模板 | dotnetthoughts

//dotnetthoughts.net/custom-scaffold-templates-in-asp-net-core/

關於如何在項目層面定製ASP.NET Core MVC模板的文章。

通過API-Gateway使用SAM從AWS::Serverless::Function下載鏡像 – Qiita

//qiita.com/karuakun/items/e61007864364ab164774

關於在使用AWS無服務器應用程序模型創建應用程序時如何通過API網關處理二進制數據的文章。

10個你應該嘗試的Visual Studio 2022主題(免費主題!)

//blog.dotnetsafer.com/best-visual-studio-2022-themes/

介紹可以添加到Visual Studio 2022的十個不同主題。

構建自己的反向代理

//satish1v.medium.com/build-your-own-reverse-proxy-bf3232e7e5f3

關於在YARP中創建一個簡單的反向代理服務器的文章。

現場錯誤處理 – Ayende @ Rahien

//ayende.com/blog/198369-A/error-handling-in-the-field

一個關於如何收集應用程序崩潰報告(UnhandledException)的故事,最近的Windows更新改變了WPF的行為,在內部引起了一個錯誤,所以它被忽略了,但很微妙。

如何用Azure通信服務在.NET中大規模地發送電子郵件

//medium.com/medialesson/how-to-send-emails-at-scale-in-net-with-the-azure-communication-service-14565d84147f

關於如何使用Azure通信服務來發送電子郵件的文章。

試用.NET 7中ASP.NET Core Blazor的新功能

//zenn.dev/okazuki/articles/blazor-dotnet7

介紹.NET 7中ASP.NET Core Blazor的新功能的文章。

它提到了WebAssembly加載、綁定修改器、虛擬化改進和導航改進。

圖書館、資源庫、工具等

Sergio0694/PolySharp:PolySharp為C#語言特性提供了生成的、僅有源碼的Polyfills,以輕鬆使用所有運行時無關的特性。添加一個引用,將你的C#版本設置為最新版本,然後盡情享受吧! 🚀

//github.com/Sergio0694/PolySharp

這個想法是通過為目標框架生成額外的類型來提供新的語言特性,這些類型不包含屬性(如CallerArgumentExpression)或結構(如Range)類型,這些都是C#語言特性所要求的。Polyfill。

//twitter.com/SergioPedri/status/1584482651271856128

xt0rted/dotnet-startup-projects: 一個dotnet工具來管理一個解決方案的多個Visual Studio啟動項目

//github.com/xt0rted/dotnet-startup-projects

改變解決方案所啟動的Visual Studio版本的工具。

//twitter.com/xt0rted/status/1581880780745109505?s=12&t=nWJI9WhjD8PixDRVN–Rlw

網站、文件等

.NET中的網絡遙測 – .NET | Microsoft Learn

//learn.microsoft.com/en-us/dotnet/fundamentals/networking/networking-telemetry

總結遙測信息的文件,如.NET中的網絡相關計數器。

推文

談及代碼生成的挑戰,儘管我們正在努力使ASP.NET Core和Entity Framework Core與NativeAOT兼容。


解決方案資源管理器中的一個小技巧,”顯示所有文件”,可以讓你看到你在SDK中加載的目標、道具等,等等。


談論一下如何分割總共3GB的NuGet包


如果有一件事我不喜歡,那就是被捕獲但隱藏了另一個問題的異常(或者可以避免,而使用更簡單的檢查)。Mono調試API使以編程方式監控您的Unity遊戲/編輯器變得極其簡單。


深入理解

引入System.Runtime.TieredPGO 由EgorBo提供 · Pull Request #26350 · dotnet/sdk

//github.com/dotnet/sdk/pull/26350

在.NET 7中增加了一個選項,通過環境變量TieredPGO和MSBuild屬性來啟用分層PGO。


由”[UnscopedRef]”和防禦性複製的結構產生的對範圍外堆棧內存的引用,編譯器應報告錯誤。 · Issue #64776 · dotnet/roslyn

//github.com/dotnet/roslyn/issues/64776

一個編譯器錯誤,允許編寫的代碼返回一個已經被防禦性地複製到堆棧的值的引用,並允許不應該有的訪問。

版權

原文版權:mayuki

原文鏈接://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-10-25.md

翻譯版權:InCerry

翻譯鏈接://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-10-25.md