.NET週刊【8月第3期 2023-08-20】

2023-08-28 12:01:11

國內主題

抓的是周樹人,與我魯迅有什麼關係?

https://www.cnblogs.com/JulianHuang/p/17642511.html

  • 問題:作者看到了一個關於Dictionary.Clear和new Dictionary的問題,想要探究為什麼在foreach字典的過程中,這兩種操作不會報錯。
  • 分析:作者分析了C#字典的原始碼,發現foreach字典會產生一個迭代器,它有一個指向原字典的欄位。如果在外部重新new字典,或者清空字典,都不會影響這個欄位,所以不會觸發版本檢查的異常。

DateTime 相關的操作彙總【C# 基礎】

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

在日常開發中,日期值當然是不可或缺的,能夠清晰的在腦海中梳理出最快捷的實現也非常重要,那麼今天就來彙總一下。

使用C#建立安裝Windows服務程式(乾貨)

https://www.cnblogs.com/kimiliucn/p/17637533.html

最近在公司要求使用Windows服務作為訊息佇列的消費者,所以自行研究了一下C#中Windows服務如何建立以及如何使用,以及部署的方式。我是西瓜程式猿,此篇記錄一下供大家參考學習。

長文字拆分

https://www.cnblogs.com/xbotter/p/17637416.html

  1. 企業微信訊息長度限制為2048個位元組,字元長度不等於位元組長度
  2. 使用位元組拆分,會導致中文字元被截斷
  3. 使用文字+位元組拆分,無法處理emoji表情
  4. 使用unicode字元拆分,即可解決以上問題

先前在做企業微信的應用接入ChatGPT時遇到一個問題,就是企業微信的訊息長度限制為2048個位元組,所以遇到超長文字的時候需要拆分成多條訊息傳送。

[MAUI]在.NET MAUI中實現可拖拽排序列表

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

.NET MAUI 中提供了拖放(drag-drop)手勢識別器,允許使用者通過拖動手勢來移動控制元件。在這篇文章中,我們將學習如何使用拖放手勢識別器來實現可拖拽排序列表。在本例中,列表中顯示不同大小的磁貼(Tile)並且可以拖拽排序。

C# 如何將程式加密隱藏?

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

下面將介紹如何通過LiteDB將自己的程式進行加密,首先介紹一下LiteDB

WPF如何構建MVVM+模組化的桌面應用

https://www.cnblogs.com/fengjq/p/17630386.html

模組化是一種分治思想,不僅可以分離複雜的業務邏輯,還可以進行不同任務的分工。模組與模組之間相互獨立,從而構建一種鬆耦合的應用程式,便於開發和維護。

Blazor前後端框架Known-V1.2.12

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

Known是基於C#和Blazor開發的前後端分離快速開發框架,開箱即用,跨平臺,一處程式碼,多處執行。

  • Gitee: https://gitee.com/known/Known

  • Github:https://github.com/known/Known

  • 基於C#和Blazor實現的快速開發框架,前後端分離,開箱即用。

  • 跨平臺,單頁應用,混合桌面應用,Web和桌面共用一處程式碼。

  • 包含模組、字典、組織、角色、使用者、紀錄檔、訊息、工作流、定時任務等功能。

  • 程式碼簡潔、易擴充套件,讓開發更簡單、更快捷!

.NET Core多線 (5) 常見效能問題

https://www.cnblogs.com/edisonchou/p/dotnet_multithread_learning_notes_chap5.html

去年換工作時系統複習了一下.NET Core多執行緒相關專題,學習了一線碼農老哥的《.NET 5多執行緒程式設計實戰》課程,我將複習的知識進行了總結形成本專題。

本篇,我們來繼續複習一下多執行緒效能問題的相關知識點,預計閱讀時間10分鐘。

首先,我們可以明確一下,多執行緒場景下的常見問題一般為:高CPU佔用

主題

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

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

【英文】宣佈推出 NuGet 6.7 – 確保您的安全 - NuGet 部落格

https://devblogs.microsoft.com/nuget/announcing-nuget-6-7-keeping-you-secure/

【英文】.NET Framework 2023 年 8 月安全和質量彙總更新 - .NET 部落格

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

【英文】Visual Studio 2022 – 17.7 現已推出 - Visual Studio 部落格

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

【英文】在 .NET 8 Preview 7 中宣佈 .NET MAUI:鍵盤加速器 - .NET 部落格

https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-preview-7/

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

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

【英文】.NET 2023 年 8 月更新 – .NET 7.0.10、.NET 6.0.21 - .NET 部落格

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

【英文】Visual Studio 2022 17.8 預覽版 1 已經到來! - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-8-preview-1-has-arrived/

https://github.com/moq/moq/issues/1372

文章、幻燈片等

【英文】從 Moq 遷移到 NSubstitute 的備忘單

https://timdeschryver.dev/blog/a-cheat-sheet-to-migrate-from-moq-to-nsubstitute

【日文】將CsWin32分離為其他專案

https://zenn.dev/shinta0806/articles/cswin32-separation

【英文】結構化 ASP.NET 在地化

https://dev.to/giannoudis/structured-aspnet-localization-35bo

【英文】.NET 中執行上下文的隱藏工作

https://medium.com/net-under-the-hood/hidden-workings-of-execution-context-in-net-43b491726c65

【英文】面向普通受眾的多分支圖 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/multi-branch-graph-available-for-general-audiences/

【英文】使用 NBomber 對 C# 進行 HTTP API 負載測試

https://medium.com/@kostash23lena/load-testing-http-api-on-c-with-nbomber-96939511bdab

【英文】如何使用 JetBrains Rider 偵錯 Docker 和 Docker Compose 解決方案 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/08/16/debugging-docker-and-docker-compose-solutions-with-jetbrains-rider/

【日文】在VScode的C#擴充套件中,繼續使用omnisharp-Qiita

https://qiita.com/skitoy4321/items/c6b0873a37fe649f9ca6

【C#】使用Spanbyte一點點進行雜湊值計算(IncrementalHash) - Qiita

https://qiita.com/mitsu_at3/items/438b4c4252947b467ef2

【英文】鍵控服務依賴注入容器支援:探索 .NET 8 預覽版 - 第 6 部分

https://andrewlock.net/exploring-the-dotnet-8-preview-keyed-services-dependency-injection-support/

【英文】Visual Studio 17.7 中我最喜歡的功能 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/my-favorite-features-in-visual-studio-17-7/

【英文】Visual Studio 2022 – 17.7 效能增強 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-7-performance-enhancements/

【日文】C# 將自定義記錄器合併到通用主機的 DI 中 - Qiita

https://qiita.com/mxProject/items/41f75c057c855c49efd0

【日文】如何使用 .NET 8 執行 Blazor 伺服器(Blazor 伺服器模板消失)

https://zenn.dev/microsoft/articles/blazor-server-on-net8-pre6

【英文】在 Kubernetes 上收集 .NET Core 的記憶體轉儲

https://cezarypiatek.github.io/post/memory-dump-on-kubernetes/

【英文】.NET 遷移的故事 - 簡介

https://www.jimmybogard.com/tales-from-the-net-migration-trenches/

【英文】介紹 .NET 8 中的新 IHostedLifecycleService 介面 - Steve Gordon - 與 Steve 一起編碼

https://www.stevejgordon.co.uk/introducing-the-new-ihostedlifecycleservice-interface-in-dotnet-8

【英文】.NET 8 攔截器

https://khalidabuhakmeh.com/dotnet-8-interceptors

【日文】[C# 8.0] 通過指定一系列索引器而不是子字串來提取字串 - Qiita

https://qiita.com/YouKnow/items/93b4b978ecb113616fae

【英文】C# 是否總是具有字串連線和插值的裝箱…

https://pvs-studio.com/en/blog/posts/csharp/1060/

【英文】讓我們共同創造!您的聲音很重要 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/lets-co-create-your-voice-matters/

【英文】如何從 Moq 遷移到 NSubstitute

https://itnext.io/how-to-migrate-from-moq-to-nsubstitute-cdb6a80404d

【英文】抑制GCTransition

https://minidump.net/suppressgctransition-b9a8a774edbd

【日文】通過參照ImmutableArray<T>內部陣列來加速

https://zenn.dev/benutomo/articles/54083312afca95

【英文】Visual Studio 2022 v17.8 預覽新的 IntelliTest - Visual Studio 雜誌

https://visualstudiomagazine.com/articles/2023/08/14/intellitest-preview.aspx?m=1

【日文】從 Moq 遷移到 NSubstitute

https://zenn.dev/masakura/articles/9b97948a11b40d

【日文】如何使用 .NET 8 執行 Blazor 伺服器(Blazor 伺服器模板消失)

https://zenn.dev/microsoft/articles/blazor-server-on-net8-pre6?redirected=1

【日文】System.Text.Json 不支援帶換行符的 Base64 字串

https://zenn.dev/shimat/articles/3d319d50b3f0c3

【英文】.NET 月刊 | 2023 年 8 月 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/08/07/net-annotated-monthly-august-2023/

【英文】.NET 中的 Polyfills 可以簡化多目標 - Gérald Barré

https://www.meziantou.net/polyfills-in-dotnet-to-ease-multi-targeting.htm

【英文】如何對不同的 .NET 版本進行基準測試

https://steven-giesel.com/blogPost/59cfb6f8-8b87-4707-a99e-e372541b696a

【英文】.NET .gcdump 內部結構

https://chnasarre.medium.com/net-gcdump-internals-fcce5d327be7

【日文】[C#] 完全理解結構 - Annulus Games

https://annulusgames.com/blog/understanding-struct/

庫、儲存庫、工具等

Giannoudis/TimePeriodLibrary:廣泛的時間段計算和單獨的日曆週期。

https://github.com/Giannoudis/TimePeriodLibrary

PowerRule / PowerRule GitLab

https://gitlab.com/power-rule/power-rule

le-nn/memento:Blazor/.NET 的簡單使用者端狀態管理容器包括重做/撤消和 ReduxDevTools 支援。

https://github.com/le-nn/memento

網站、檔案等

ASP.NET Core 實戰,第三版現已出版

https://andrewlock.net/asp-dotnet-core-in-action-third-edition-is-now-in-print/

版權宣告

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.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,歡迎大家加入。

抽獎送書活動預熱!!!

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