這應該是2023年農曆新年前的最後一篇.NET週報,再次預祝大家新年快樂!
譯者注:這是Michal Strehovský大佬的一篇文章,他目前在微軟.NET Runtime團隊工作,主要是負責.NET NativeAOT功能的開發。我在前幾天看到這篇文章,非常喜歡,雖然它的內容稍微有點過時(還是使用的.NET Core 3.0),不過其中的一些程式設計技巧和思維方式很受用,特意找到Michal大佬要到了授權,翻譯給大家看。
https://www.cnblogs.com/newton/p/17033789.html
本文介紹瞭如何.NET中gRPC的入門和程式碼實踐。
https://www.cnblogs.com/lindexi/archive/2023/01/09/17038319.html
本文屬於 dotnet 程式碼優化系列部落格。相信大家都對圈複雜度這個概念很是熟悉,本文來和大家聊聊邏輯的圈複雜度。程式碼優化裡面,一個關注的重點在於程式碼的邏輯複雜度。一段程式碼的邏輯複雜度越高,那麼維護起來的難度也就越大。衡量程式碼的邏輯複雜度的一個維度是通過邏輯圈複雜度進行衡量。本文將告訴大家如何判斷程式碼的邏輯圈複雜度以及一些降低圈複雜度的套路,讓大家瞭解如何寫出更好維護的程式碼。
https://mp.weixin.qq.com/s/1cevbNaCjJxGC3jT1OEcMA
如標題所示,經過Linux基金會的統計,dotnet位於Top 30的開源專案。
這是基於.NET Core 3.1、React開發的開源專案,支援賬號密碼、手機簡訊、第三方登入,採用前後端分離架構的單點登入系統。
https://mp.weixin.qq.com/s/oUamKudNlELUIIIfT49OEw
大家好,我是寶弟!今天給大家分享一款完全國產的基於C#語言開發的跨平臺的文字解析引擎(模板引擎)JNTemplate,它能生成任何基於文字的內容,包括且不限於html,xml,css等,讓前端展示與後端程式碼邏輯分離。同時,它也提供了一個在WebForm與Razor之外的選擇!
https://mp.weixin.qq.com/s/KhK-uvMFrL8qNmk-26r6cQ
Blazor WebAssembly初次存取需要載入很多dll,體積較大,因此第一次載入比較慢。針對此問題Microsoft提供了優化方案:壓縮 https://learn.microsoft.com/zh-cn/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-6.0
https://mp.weixin.qq.com/s/y-s-_G7tbNhT0xRG8cl1Bg
本文介紹瞭如何.Net6中實現對某個網址截圖,可通過Selenium模擬存取網址並實現截圖,另外還有遇到的一些問題。
https://mp.weixin.qq.com/s/H8ysc3_DOfl5zUoeFDVOgw
依賴管理是 NuGet 的核心功能。Nuget管理單個專案的依賴關係很容易,只需要每個專案維護自己的Nuget依賴與對應版本。在您管理許多不同專案的公共依賴項的情況下,您可以利用 NuGet 的中央包管理功能從一個位置輕鬆完成所有這些工作。
https://mp.weixin.qq.com/s/IWTp0u43uHNf4Cz2riXaoQ
2023年已經開始了,在2022年從事.NET開發的你有什麼收穫呢?在過去的2022年裡面,GitHub最受歡迎、Stars最多的專案分別是哪些呢?今天我們分享一下github上Stars排名前十的非官方.NET開源專案。
https://mp.weixin.qq.com/s/Zedkai4YpSEmT9BKUTe0qg
在之前的一篇文章《看我是如何用C#編寫一個小於8KB的貪吃蛇遊戲》中,介紹了在.NET Core 3.0的環境下如何將貪吃蛇遊戲降低到8KB。不過也有很多小夥伴提出了一些疑問和看法,本文一一為大家解答這些問題。
https://devblogs.microsoft.com/dotnet/january-2023-updates/
.NET 7.0.2和.NET 6.0.13已經發布。
該版本修復了.NET 6中的一個DoS漏洞。 該漏洞允許通過向已釋出的端點傳送惡意請求,造成堆疊溢位,從而進行拒絕服務攻擊。
https://blog.jetbrains.com/dotnet/2023/01/19/resharper-2023-1-eap-starts/
ReSharper 2023.1的EAP(早期存取計劃)已經開始。
ReSharper 2023.1 EAP 1包括程式碼檢查方面的改進,如對#region
的快速修復,將Span.SequenceEquel
重寫為is
,以及改進的C++支援。
https://blog.jetbrains.com/dotnet/2023/01/19/rider-2023-1-eap-start/
Rider 2023.1的EAP(早期存取計劃)已經開始。
Rider 2023.1 EAP 1包括Unity的API彈出式檔案連結,在虛幻引擎中建立新類的重新實現的UI,對Docker的快速模式支援,對#region
和Span
的快速修復。 SequenceEquel
重寫為is
,程式碼檢查的改進,以及主工具列的UI修復。
https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-5-preview-3-is-here/
Visual Studio 2022 17.5 Preview 3現已釋出。
https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-810/
.NET社群工具包8.1已經發布。
ObservableProperty
的自定義屬性,MVVM工具包分析器,MVVM工具包源生成器優化,IObservable<T>
信使擴充套件,.NET 7和C# 11支援。
https://github.com/MinBZK/woo-besluit-broncode-digid-app
一個名為DigiD的荷蘭應用程式已被作為開放原始碼釋出。 (這是一個全國性的應用,似乎是政府透明度維護活動的一部分)。
該應用程式有1500萬活躍使用者,是用Xamarin.Forms製作的。
https://github.com/dotnet/maui/releases/tag/7.0.58
.NET MAUI 7.0.58服務版本2已經發布。
該版本修復了各種錯誤並更新了Windows App SDK。
https://devblogs.microsoft.com/dotnet/dotnet-framework-january-2023-update/
.NET框架的2023年1月累積更新預覽已經發布。
該版本修復了幾個WPF的錯誤和Socket的一個罕見問題。
https://devblogs.microsoft.com/visualstudio/visual-studio-spell-checker-preview-now-available/
對Visual Studio預覽版中現在可用的拼寫檢查器的介紹。
這篇文章介紹瞭如何使用拼寫檢查器,它檢查哪些模式以及如何客製化它。
https://ufcpp.net/blog/2023/1/list-pattern-enumerable/
C# 12 IEnumerable
的候選列表模式匹配。
https://ufcpp.net/blog/2023/1/semi-auto-property
本文介紹了C#12候選半自動屬性(只有後援欄位是自動生成的)。
它還解釋了初始化器和它們被覆蓋時的行為。
https://dev.to/satyakarki/beginners-guide-to-get-started-with-smart-contract-in-c-3c7e
介紹使用Stratis實現智慧合約,這是一個允許用C#實現智慧合約的平臺。
https://ericsink.com/native_aot/index.html
該系列文章涉及關於Native AOT的解釋和範例程式碼。
https://pvs-studio.com/en/blog/posts/csharp/1020/
由PVS-Studio開發人員發現並報告的2022年開源專案中發現的十大錯誤組合。
https://blog.jetbrains.com/dotnet/2023/01/17/securing-sensitive-information-with-net-user-secrets/
介紹如何使用.NET UserSecrets在本地儲存敏感資訊並從你的應用程式中使用它。
使用JetBrains Rider的.NET使用者祕密以及如何從你的應用程式中管理和使用它們。
https://devblogs.microsoft.com/visualstudio/new-better-search-in-visual-studio/
對Visual Studio中預覽的新的一體式搜尋的介紹。
https://medium.com/abp-community/rate-limiting-with-asp-net-core-7-0-e7834a94b8c5
介紹.NET 7中的速率限制API以及如何在ASP.NET Core中使用它。
探索最小化API的模型繫結邏輯:最小化API的幕後故事--第395部分。
這篇文章解釋瞭如何將收到的請求與處理程式引數繫結的機制和流程。
https://khalidabuhakmeh.com/multiple-file-drag-and-drop-upload-with-aspnet-core
如何實現Razor頁面的多檔案拖放式上傳。
https://chnasarre.medium.com/reading-object-in-memory-starting-with-stacks-aaef54bd521d
關於如何讀取可由診斷協定nettrace接收的物件的有效載荷的解釋。
https://dev.to/karenpayneoregon/learn-dateonly-timeonly-23j0
介紹DateOnly和TimeOnly的基礎知識,以及它們在Json.NET、System.Text等庫中的支援。
https://qiita.com/emoacht/items/3f7e216b43431e960751
關於PropertyChangedEventManager``AddListener
/RemoveListener
必須從同一個執行緒呼叫。
https://zenn.dev/fugi/articles/d2a5ef35e4190f
試圖實現類似Dictionary的結構,並瞭解如何處理雜湊值。
https://zenn.dev/nin_neko/articles/6f08f2fdace43f
關於以及如何處理當入口點有STAThread
屬性但卻是async Task
的非同步方法時,執行緒單位沒有被設定為STA。
https://qiita.com/yaju/items/35d94a20e8e3e8ca268c
Microsoft.Extensions.Configuration.Json(例如appsettings.json)關於允許在JSON中寫JavaScript或C#風格的註釋。
https://qiita.com/gushwell/items/d659027304645b30b805
如何在ASP.NET Core中用ValidationAttribute
實現自定義驗證屬性。
https://medium.com/@skyake/the-evolution-of-delegate-performance-in-net-c8f23572b8b1
.NET 7中PGO的委託優化解析。
https://dev.to/sannae/track-my-coding-progress-on-github-with-a-net-worker-service-49g4
一個如何實現工作者服務的例子,以跟蹤GitHub上儲存庫的語言統計資料。
https://ufcpp.net/blog/2023/1/using-alias-any-types/
對通過 "使用"來擴充套件別名可以定義的內容的建議進行評論。
https://adamsitnik.com/PerfCollectProfiler/
如何在Linux上用BenchmarkDotNet對.NET進行剖析。
0.13.3中引入的PerfCollectProfiler外掛允許將剖析結果以PerfView、SpeedScope和任何支援perf檔案的工具所能開啟的格式匯出。
https://johnnys.news/2023/01/Dots-a-dotnet-SDK-manager
一個用於安裝和解除安裝各種.NET SDK的GUI工具。
https://github.com/VeloxDB/VeloxDB
一個用C#編寫的物件導向的資料庫,適用於.NET平臺。
https://github.com/otterkit/otterkit
為.NET平臺提供ISO COBOL 2022的編譯器和執行時實現。
https://stablediffusiondiscordbot.azurewebsites.net/
Discord Bot和它的網站,用於用穩定擴散的AI影象生成,等等。
https://github.com/Marplex/WpfSnowfall
一個允許你在你的WPF應用程式中進行降雪的控制元件。
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/package-validation/baseline-version-validator
描述了在.NET 6及以後版本中引入的NuGet包驗證功能。
它可以檢測到從建立NuGet包時指定的基線版本對API的破壞性變化。
https://dotnet.microsoft.com/ja-jp/learn/ml-dotnet/get-started-tutorial/intro
關於使用ML.NET來確定文字的正負性的教學。
談談.NET 8中Kestrel的命名管道支援。
https://twitter.com/jamesnk/status/1615902642492039180
由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.NET週報-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源專案可以下方的專案地址提交Issue或者在我的微信公眾號私信。
格式如下:
https://github.com/InCerryGit/.NET-Weekly
相信大家在開發中經常會遇到一些效能問題,苦於沒有有效的工具去發現效能瓶頸,或者是發現瓶頸以後不知道該如何優化。之前一直有讀者朋友詢問有沒有技術交流群,但是由於各種原因一直都沒建立,現在很高興的在這裡宣佈,我建立了一個專門交流.NET效能優化經驗的群組,主題包括但不限於:
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET效能問題和寶貴的效能分析優化經驗。目前一群已滿,現在開放二群。
如果提示已經達到200人,可以加我微信,我拉你進群: ls1075
另外也建立了QQ群,群號: 687779078,歡迎大家加入。