.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的支持。
- OpenSilver越來越接近於與早已死亡的微軟Silverlight的開源平等地位 — Visual Studio Magazine
- OpenSilver 1.1承諾與Silverlight應用程序99%的代碼兼容
今天發佈:Windows Dev Kit 2023又名Project Volterra – Windows Developer Blog
適用於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的解釋性幻燈片。
.NET Systems Programming Learned the Hard Way
Recording: //t.co/WvVzjp98Ip
Slides: //t.co/34ohASQ69w#dotnet #performance— Aaron Stannard (@Aaronontheweb) October 19, 2022
[C#]使用MemoryPack – 基礎知識1 | spacekey.dev
使用二進制序列化工具MemoryPack的系列文章
- [C#]MemoryPack – ASP.NET Core中使用 | spacekey.dev
- [C#]MemoryPack – TypeScript中使用 | spacekey.dev
- [C#]MemoryPack – MemoryPackable特性 | spacekey.dev
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項目編寫你自己的代碼覆蓋統計腳本
關於如何創建自己的一系列步驟以獲得.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中大規模地發送電子郵件
關於如何使用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中加載的目標、道具等,等等。
如果有一件事我不喜歡,那就是被捕獲但隱藏了另一個問題的異常(或者可以避免,而使用更簡單的檢查)。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