.NET週刊【1月第3期 2024-01-24】

國內文章

.NET開源的簡單、快速、強大的前後端分離後臺權限管理系統

https://www.cnblogs.com/Can-daydayup/p/17980851

本文介紹了中臺Admin,一款基於Vue3和.NET8的開源後臺權限管理系統。它具備前後端分離架構,支持多租戶、接口和數據權限、動態Api等功能,並集成了多種中間件和服務。系統模塊包括用戶、角色、部門等管理功能。文章還提供了後端和前端代碼的獲取方式,並說明了如何使用源碼或項目模板新建項目。最後,提供了在線體驗地址和功能截圖,方便用戶瞭解系統界面和操作。

C#開源免費的開發效率提升利器:DevToys開發人員的瑞士軍刀!

https://www.cnblogs.com/Can-daydayup/p/17986955

本文介紹了DevToys,這是一款基於C#的開源Windows開發者工具箱,提供28+種實用工具,如格式化、JWT解碼、URL編碼/解碼等,支持離線使用。適用於Windows 10 build 1903+版本。工具可從微軟應用商店或GitHub下載。項目源碼和更多功能可在GitHub和官網查看,歡迎給予Star支持。

.NET集成IdGenerator生成分佈式全局唯一ID

https://www.cnblogs.com/Can-daydayup/p/17983468

本文講述了.NET集成IdGenerator生成分佈式全局唯一ID的方法。分佈式ID用於解決分佈式系統中的唯一性和性能問題,需滿足全局唯一、高性能、高可用、易用和壓縮性等條件。IdGenerator基於優化的雪花算法,支持多種編程語言和環境,能在容器環境下自動擴容,兼容所有雪花算法。它在處理系統時間回撥問題時,採用預留序數生成新ID。性能測試顯示,雪花漂移算法的處理速度顯著快於傳統雪花算法。最後,文章提供了在.NET環境下如何創建控制檯、引入NuGet包和調用IdGenerator的示例。

純c#運行開源本地大模型Mixtral-8x7B

https://www.cnblogs.com/gmmy/p/17989497

本文介紹瞭如何在C#環境下本地部署和運行Mixtral-8x7B大模型,利用LLamaSharp包實現。該模型與GPT-3.5相比,在多項任務上表現出色。LLamaSharp支持CPU和N卡CUDA推理,提高了運行效率。作者還分享了項目代碼和使用Nous-Hermes微調版Mixtral-8x7B模型的經驗,強調了內存對於提升推理速度的重要性。

使用Visual Studio調試 .NET源代碼

https://www.cnblogs.com/Can-daydayup/p/17989098

本文講述瞭如何在Visual Studio中調試.NET源代碼,提升開發效率。首先,取消“工具”中“調試”選項下的“啓用僅我的代碼”,然後啓用“源鏈接支持”和“符號服務器”,包括“Microsoft符號服務器”和“NuGet.org符號服務器”。可選地,開啓“在模塊加載時取消JIT優化(僅限託管)”以便更準確調試。設置後初次加載可能較慢。文章以System.Text.Json的JsonSerializer.Deserialize方法爲例,展示瞭如何進行源碼調試。

Semantic Kernel 通過 LocalAI 集成本地模型

https://www.cnblogs.com/shanyou/p/17988059

本文介紹瞭如何使用LocalAI集成Meta開源的LLama 2大語言模型,並通過Semantic kernel(SK)實現本地部署。LocalAI是一個兼容OpenAI API的本地推理框架,支持多種模型,無需GPU,使用C++優化速度。通過修改HttpClient指向LocalAI,可以將本地模型以OpenAI格式通過SK訪問。文中提供了詳細的集成步驟和代碼示例,方便開發者在自己的服務器上部署和運行大模型。

WebAssembly入門筆記[1]:與JavaScript的交互

https://www.cnblogs.com/artech/p/17982714/hello_wasm_1

本文介紹了WebAssembly,一種類似彙編的低級語言,用於提高Web應用性能,不取代而是輔助JavaScript。WebAssembly以二進制格式運行,可由多種高級語言編譯而成,支持四種基本數據類型。文章通過S-expression文本形式的示例,展示了WebAssembly程序的編寫和JavaScript的交互。

C# WPF 開發一個 Emoji 表情查看軟件

https://www.cnblogs.com/he55/p/17988464

微軟發佈Windows 11時推出了開源Emoji表情庫fluentui-emoji,共有1545個表情。作者爲方便查找表情,製作了表情查看器,可快速瀏覽並定位表情文件。表情文件夾內包含元數據和png/svg圖片,作者通過解析元數據和圖片文件,不引入外部庫,使用TinyJson解析庫將json轉爲Model,實現了數據的解析和分組,並在界面上展示。開源地址爲:https://github.com/he55/EmojiViewer。

NCC Mocha v0.1.0 發佈,.NET 開發的基於 OpenTelemetry 的 APM 系統

https://www.cnblogs.com/eventhorizon/p/17979677

本文介紹了Mocha,這是一個基於.NET的APM系統,提供了可擴展的數據分析和存儲平臺。項目支持通過OTel SDK上報Trace數據,並可通過Grafana展示。Mocha項目旨在解決可觀測性數據的存儲和分析問題,提供了一套完整的功能集合,包括APM、基礎設施監控、日誌、報警和數據探索。技術架構包括數據分發、流處理、存儲和查詢等組件。快速體驗指南介紹瞭如何使用Docker Compose啓動項目、發送Trace數據和配置Grafana中的Jaeger數據源。

程序員必備!10款實用便捷的Git可視化管理工具

https://www.cnblogs.com/Can-daydayup/p/17991511

本文分享了10款Git可視化管理工具,強調合適的工具能降低技術門檻,提高團隊協作效率。Git是高效的分佈式版本控制系統,記錄文件變更歷史,支持多人協作。文章列舉了Sourcetree、GitHub Desktop和Visual Studio等工具,它們提供圖形界面簡化Git操作,如提交、分支管理等,並附有使用教程鏈接。

Nginx被它打敗了?

https://www.cnblogs.com/hejiale010426/p/17988975

本文討論了Nginx和微軟開發的YARP在代理服務器場景的應用。Nginx通常足夠應對大多數代理需求,但在複雜業務中,通過lua腳本擴展功能可能不夠便捷。YARP作爲一個SDK,爲.NET開發者提供了便利。文章展示瞭如何部署Nginx和YARP環境,並進行了性能測試。測試結果顯示,YARP與Nginx在性能上相當,對原接口的性能影響微乎其微。此外,文章還提供了Kestrel相關資料鏈接,說明Kestrel與Nginx在傳輸層上的相似性,並邀請讀者加入技術交流羣。

記一次 .NET某工控自動化系統 崩潰分析

https://www.cnblogs.com/huangxincheng/p/17989081

本文分析了一個微信朋友程序偶發崩潰的問題。作者使用WinDbg工具,通過命令!analyze -v定位到崩潰發生在GC標記階段,原因是訪問了壞內存。進一步分析發現,雖然託管堆未損壞,但託管對象o出現問題。作者通過!verifyheap!address命令檢查,發現託管地址與託管段之間的空間距離特徵,爲解決問題提供了線索。

C# AsyncLocal 是如何實現 Thread 間傳值

https://www.cnblogs.com/huangxincheng/p/17987389

本文講述了.NET中AsyncLocal的實現原理。作者在.NET高級調試訓練營中被問及此問題,決定用文字和圖表詳細解釋。C#中線程間傳值可通過ThreadTaskawait/async實現,而AsyncLocal是託管C#實現,與coreclr、Windows無關。例子展示瞭如何在新線程中獲取_asyncLocal的值,源碼分析揭示了值是如何存儲和傳遞的。主線程的_executionContext被複制到新線程,通過ExecutionContext.Capture()實現。最後,作者通過調試驗證了新線程確實接收到了正確的_executionContext

使用 NuGet.Server 創建和部署 ASP.NET Web 應用程序搭建私有Nuget服務器

https://www.cnblogs.com/hudean/p/17993315

本文介紹瞭如何使用NuGet.Server在ASP.NET Web應用程序中創建私有NuGet服務器。首先,在Visual Studio中創建一個新的ASP.NET Web應用程序項目,設置.NET Framework版本爲4.6,並選擇空模板。然後,通過管理NuGet包安裝NuGet.Server,將空Web應用程序轉換爲NuGet包源。安裝過程中會修改web.config文件,創建Packages文件夾,並可能產生重複元素,需要手動檢查並刪除。本地運行應用程序後,NuGet.Server會根據NuGet 3.3的本地存儲佈局重建Packages文件夾。部署應用程序後,可以通過設置web.config中的apiKey值,使用nuget push命令向服務器推送包。從NuGet.Server 3.0.0開始,推送包的URL爲http://<domain>/nuget

如何爲開源項目和社區做貢獻 -- 你應該知道的十件事

https://www.cnblogs.com/guojin-blogs/p/17984535

本文作者顏國進分享了他從技術新手成長爲開源項目負責人的經歷。他從機械專業研一新生起步,通過學習C++、C#和Python等語言,以及深入研究OpenCV圖像處理和模型部署技術,最終發佈了OpenVINO C# API開源項目,並撰寫了多篇技術文章。他強調參與開源項目對個人技術提升、建立聲譽和職業發展有顯著益處,同時對行業和企業發展也有正面影響。開源軟件促進了技術創新,降低了成本,提高了靈活性,並建立了活躍的社區。作者通過開源貢獻,不僅提升了自己的技術能力,還獲得了英特爾邊緣計算創新大使、百度飛槳開發者專家等榮譽,增強了社區影響力。

C# 線程本地存儲 爲什麼線程間值不一樣

https://www.cnblogs.com/huangxincheng/p/17982804

本文講述了ThreadStatic屬性在多線程中的行爲。作者通過實驗代碼發現,使用ThreadStatic標記的字段,在不同線程中有不同的初始值。通過分析彙編代碼和CoreCLR源碼,解釋了這一現象:每個線程有自己的ThreadLocalBlock,其中包含ThreadLocalModule字典,ThreadStatic字段存儲於此。作者用圖示和windbg工具驗證了結構和存儲位置。

Advanced .Net Debugging 1:你必須知道的調試工具

https://www.cnblogs.com/PatrickLiu/p/17965068

本文講述了調試工具的重要性和如何使用它們來提高開發效率。作者分享了自己過去未使用工具而直接審查代碼的經歷,並推薦了《Net 高級調試》一書,強調了使用更新的工具進行調試的必要性。文中介紹了Windows調試工具集,包括用戶態調試工具NTSD、CDB和WinDbg,以及內核態調試器KD。這些工具使用相同的調試引擎,但有不同的界面和用途。作者還提到了配置環境變量的便利性,並說明了如何獲取調試工具集,可以作爲WDK或Windows SDK的一部分,或作爲獨立工具集安裝。最後,作者提到了自己使用的Windows SDK版本,強調了其對最新Windows版本的支持。

Net Core中使用EF Core連接Mysql數據庫

https://www.cnblogs.com/huangqian/p/17985122

本文介紹了Entity Framework Core(EF Core),一種微軟推出的ORM框架,它封裝了ADO.NET,支持多種數據庫。EF Core有四種使用模式:Code First自動創建數據庫結構,DB First根據數據庫生成類,Model First通過可視化設計數據庫,以及靈活模式分離數據庫和代碼的開發。文章詳細說明了如何引入EF Core,創建數據上下文DbContext,並配置數據庫連接。通過實體類與數據庫表的映射,可以進行數據操作,如添加、更新和多表查詢。這些操作示例展示了EF Core的實用性和便捷性。

精通 VS 調試技巧,學習與工作效率翻倍!

https://www.cnblogs.com/bett/p/17985492

本文介紹了調試的概念和方法。調試是編程中查找和修正錯誤的過程。在Visual Studio中,有Debug和Release兩種編譯選項,Debug便於調試但體積大,Release體積小但無法調試。文章還介紹了常用的調試快捷鍵,如F5啓動調試,F9設置斷點等。斷點幫助程序在特定位置停止,以便檢查執行細節。監視功能可以觀察變量值的變化,而內存觀察則用於查看變量在內存中的存儲情況。通過這些工具和方法,可以有效地進行代碼調試。

FluentValidation在C# WPF中的應用

https://www.cnblogs.com/Dotnet9-com/p/17986383

本文探討了在.NET開發中使用FluentValidation進行C# WPF項目屬性驗證的方法。FluentValidation適用於多種.NET應用,特別是與WPF和MVVM模式結合時,能夠提供強大的數據驗證功能。文章介紹瞭如何構建WPF應用程序,實現基本數據類型和複雜屬性的驗證,並提供用戶友好的錯誤提示。通過實踐發現,雖然官方文檔對WPF支持有限,但可以通過實現IDataErrorInfo接口和使用FluentValidation庫有效地進行屬性驗證。

基於CefSharp開發瀏覽器(十)CefSharp.Wpf中文輸入法偏移處理

https://www.cnblogs.com/mchao/p/17985041

本文討論了CefSharp WPF版本中文輸入法顯示問題。作者首先嚐試了官方的WpfImeKeyboardHandler解決方案,但效果不佳。隨後,作者發現CefSharp.Wpf.HwndHost能夠解決輸入法框偏移問題,但使用HwndHost會帶來空域規則遵守、細節處理複雜性增加等問題。最後,作者測試了CefSharp.WinForms,並發現其對中文輸入法支持更好。鑑於CefSharp.WinForms和CefSharp.WPF接口相似,作者建議在WPF項目中使用WindowsFormsHost承載CefSharp.WinForms來解決中文輸入法問題,並歡迎更好的解決方案分享。

【譯】解開託管內存的祕密:深入瞭解事件處理程序泄漏!

https://www.cnblogs.com/MeteorSeed/p/17987012

本文討論了WPF開發中常見的事件處理程序泄漏問題,這種泄漏由於忘記取消事件訂閱而引起,難以發現和修復。Visual Studio更新了託管內存使用工具,簡化了泄漏的發現和修復過程。該工具能顯示泄漏對象和其訂閱的事件。文章通過一個示例說明了如何使用該工具診斷和解決泄漏問題,還提到了該工具的其他潛在用途,並鼓勵用戶下載最新版Visual Studio並提供反饋。

一個例子形象地理解同步與異步

https://www.cnblogs.com/s0611163/p/17979998

本文通過示例分析了同步請求接口的問題和改進方法。原代碼中使用for循環創建500個while(true)循環進行同步請求,但只有一個循環得到執行。建議使用線程或Task.Run改進。通過添加Thread.Sleep(1)或await Task.Delay(1),嘗試提高效率,但前者無效,後者則顯著提升了請求速度,多個while(true)能並行執行。最後,將同步請求改爲異步請求,進一步優化性能。

【解決方案】如何使用 Http API 代替 OpenFeign 進行遠程服務調用

https://www.cnblogs.com/Apluemxa/p/17979942

本文討論了爲何替換OpenFeign,主要是出於安全性考慮,減少外部依賴,爲Spring 6做準備。OpenFeign基於Feign增加SpringMVC註解支持,使用URLConnection,通過@FeignClient註解實現服務調用。註解屬性包括url、name、value、path、configuration和fallback。遠程服務調用分爲註冊中心服務和單獨http接口兩種情況。文章還提到了Apache HttpClient等Http API,但認爲它們設計臃腫,不如OpenFeign簡潔。最後重點介紹了Spring的RestTemplate,它是一個同步客戶端Http請求模板,提供了多種便捷方法執行HTTP請求和處理響應。

C#對象二進制序列化優化:位域技術實現極限壓縮

https://www.cnblogs.com/Dotnet9-com/p/17981055

本文探討了如何優化C#對象的二進制序列化,以便在操作系統中高效傳輸進程信息。文章首先定義了進程對象的字段和數據類型,然後通過位域技術減小數據包大小。通過創建C#類SystemProcess,文章展示瞭如何將進程信息轉換爲二進制格式,以便網絡傳輸。

單層應用升級到多層應用3

https://www.cnblogs.com/fanshaoO/p/17982859

本文講述瞭如何優化軟件項目結構,通過將Core項目中的基礎功能細分,提高了模塊化程度。文章詳細描述了從單層結構向多層結構遷移的過程,包括依賴注入、授權、緩存、用戶信息、權限檢查、工具類、事件總線和文件存儲等組件的拆分。每個組件被封裝到獨立的類庫中,以便根據需要進行引用,從而提高了代碼的可維護性和可重用性。例如,EventBus被拆分爲基礎接口和不同實現的類庫,FileStorages也採用了類似的拆分方法。這種拆分策略使得項目結構更加清晰,便於管理和擴展。

【譯】Visual Studio 2013 退役 :舊版本 Visual Studio 的支持提醒

https://www.cnblogs.com/MeteorSeed/p/17979787

本文提醒用戶Visual Studio 2013將於2024年4月9日停止支持,建議升級至Visual Studio 2022。Visual Studio 2019將於2024年4月9日進入擴展支持階段。Visual Studio 2022是64位IDE,具備生產力改進、Git支持、GitHub集成和人工智能代碼完成等功能。舊版Visual Studio用戶應注意關鍵支持日期,確保使用最新更新版本以獲得安全修復。Visual Studio 2022提供預覽、當前和長期服務通道,以適應不同用戶需求。微軟鼓勵用戶通過開發者社區提供反饋,並通過社交媒體平臺與Visual Studio團隊保持聯繫。

深度解析C#數組對象池ArrayPool<T>底層原理

https://www.cnblogs.com/pengze0902/p/17951360

本文講述了.NET中的池化技術,包括連接池、線程池、對象池、網絡套接字池和資源池,這些技術通過重複使用資源提高性能。介紹了.NET的MemoryPool、ArrayPool、MemoryManager等對象,以及它們在內存管理、數據庫連接和線程管理中的應用。特別強調了ArrayPool<T>的作用,它通過管理數組重用減少垃圾回收壓力和內存碎片,尤其適用於高性能應用和多線程環境。最後提到ArrayPool的底層實現是ConfigurableArrayPool。

在Winform系統開發中,使用MediatR來實現類似事件總線的消息處理

https://www.cnblogs.com/wuhuacong/p/17984987

本文介紹了MediatR框架,它是.NET平臺下的進程內消息處理框架,支持請求/響應、命令、查詢等消息類型,實現了消息與處理器的解耦。文章詳細說明了如何在Winform系統開發中使用MediatR,包括通過NuGet安裝、服務注入、以及創建ServiceLocator靜態類來全局存儲和獲取IServiceProvider實例。通過這些步驟,開發者可以方便地在Winform應用中實現類似事件總線的功能。

碼農的轉型之路-IoTBrowser(物聯網瀏覽器)雛形上線

https://www.cnblogs.com/yizhuqing/p/17981140

本文講述了作者近期的幾項工作進展:首先,他測試了一個工控盒子,運行win10系統的物聯網服務,除了一次自動更新重啓外,運行穩定。其次,作者學習了MQTT、HMI、SCADA等新概念,並研究了幾個物聯網開源項目。接着,他開發了IoTBrowser(物聯網瀏覽器)的初版,並在Gitee上發佈,還計劃推出兩個版本,一個免費但帶有Logo,另一個是企業版,去除Logo需付費。最後,作者提到將開啓新系列,圍繞IoTBrowser的介紹和二次開發教程。

物聯網瀏覽器(IoTBrowser)-Web串口自定義開發

https://www.cnblogs.com/yizhuqing/p/17984857

本文介紹了物聯網瀏覽器(IoTBrowser)的Web串口自定義開發過程。IoTBrowser通過封裝API,允許前端用js進行串口的打開、關閉、數據發送和接收,利用SignalR實現客戶端的實時通訊。開發步驟包括創建控制檯工程、添加引用、新增類並實現接口、初始化驅動、編寫打開關閉串口和發送數據的代碼。本機測試後,將編譯的exe文件放入指定插件目錄進行系統測試。最後,提供了示例代碼鏈接,用於開發實際串口交互程序。

如何讓你的.NET WebAPI程序支持HTTP3?

https://www.cnblogs.com/hejiale010426/p/17985452

本文介紹瞭如何在Token Gateway項目中實現Http3。首先,使用Http3需要Windows 11版本22000以上或Windows Server 2022,以及TLS 1.3以上的連接;在Linux上需要安裝libmsquic包。實現過程中,先通過Git拉取代碼,然後配置Program.cs文件,包括FreeSql類型轉換、Kestrel服務器選項、Jwt認證、跨域策略等。最後,註冊了多個服務和中間件,完成了Http3的配置和啓動。

單元測試中如何Mock HttpContext

https://www.cnblogs.com/tianqing/p/17983832

本文講述了在C#單元測試中模擬HttpContext的方法。使用Moq庫,可以在不發起實際HTTP請求的情況下測試代碼。通過安裝Moq並編寫代碼,可以創建模擬的HttpContext、HttpRequest、HttpResponse、HttpSessionState、HttpServerUtility等對象,從而實現對各種HTTP上下文組件的模擬。這樣的模擬有助於測試與HTTP上下文相關的邏輯。

基於Basic auth 的一個C# 示例

https://www.cnblogs.com/moonstars/p/17993139

本文講述了在項目中遇到客戶系統仍使用不太安全的BASIC認證的情況。BASIC認證通過明文傳輸經Base64編碼的用戶名和密碼,容易遭受中間人攻擊,通常需搭配HTTPS使用。文章還提供了C#語言實現BASIC認證的示例代碼,包括設置請求頭、傳輸參數、發起請求和處理響應等步驟。

用CI/CD工具Vela部署Elasticsearch + C# 如何使用

https://www.cnblogs.com/IWings/p/17982449

本文介紹了Vela工具的使用,它能編譯、部署程序,並支持docker鏡像部署,如RabbitMQ、PostgreSQL、Elasticsearch等。文中詳細說明了如何部署Elasticsearch,包括創建文件夾、權限設置、端口和文件夾映射、環境變量配置以及Dockerfile內容。還提到了如何以非root用戶運行docker容器,關閉Elasticsearch的密碼安全驗證,安裝IK分詞器,並重啓容器。最後,展示瞭如何在C#中使用Elasticsearch,包括連接、插入、更新、刪除、獲取和搜索數據的代碼示例。

單層應用升級到多層應用2

https://www.cnblogs.com/fanshaoO/p/17980628

本文講述瞭如何進一步拆分單層應用,將基礎設施代碼和業務代碼分離。作者創建了Api和Application兩個類庫,分別用於存放接口代碼和業務應用代碼,並調整了項目結構,使得Host項目更加簡潔。同時,提到了未來需要進一步細化基礎設施功能的拆分,以及考慮如何處理既屬於基礎設施又具有業務屬性的代碼。最後,作者預告了後續文章將繼續探討多層應用升級的優化。

主題

ReSharper 和 Rider 2023.3 的另一組錯誤修復現已發佈! | .NET 工具博客

https://blog.jetbrains.com/dotnet/2024/01/22/2023-3-3-rsrp-rd/

ReSharper 和 Rider 2023.3.3 已發佈。

此版本修復了重命名、拼寫檢查、QuickFix 等方面的多個錯誤。

版本 2.3.5 · mysql-net/MySqlConnector

https://github.com/mysql-net/MySqlConnector/releases/tag/2.3.5

MySQL 連接器 2.3.5/2.3.4 已發佈。

此版本刪除了 TLS 版本回退,支持 NuGet 包中 DLL 的數字簽名,並修復了其他幾個問題。

版本 11.0.7 · AvaloniaUI/Avalonia

https://github.com/AvaloniaUI/Avalonia/releases/tag/11.0.7

Avalonia 11.0.7 已發佈。

此版本修復了內存泄漏、XAML 編譯器錯誤和各種其他錯誤。

2.7.17 版 · StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.7.17

StackExchage.Redis 2.7.17 已發佈。

修復了多個錯誤,例如在連接關閉期間防止出現 NullReferenceException,以及在事務命令映射中取消對 SELECT 命令的破壞。

發佈 v8.0.0 · autofac/Autofac

https://github.com/autofac/Autofac/releases/tag/v8.0.0

Autofac 8.0.0 已發佈。

此版本將 .NET 8 添加到目標框架並刪除 .NET Core 3.1。

文章、幻燈片等

.NET Framework 2024 年 1 月累積更新預覽 - .NET 博客

https://devblogs.microsoft.com/dotnet/dotnet-framework-january-2024-cumulative-update-preview/

2024 年 1 月 .NET Framework 累積更新已作爲預覽版發佈。

這包括修復在 ASP.NET MVC 請求處理期間引發 ArgumentException 的問題,以及解決舊版本 zlib 庫的問題。

.NET 8 — 新數據註釋

https://henriquesd.medium.com/net-8-new-data-annotations-4434575db48b

.NET 8 中新的 System.ComponentModel.DataAnnotations 屬性簡介。

通過中級和高級系列提升您在 Visual Studio 中的 Git 和 GitHub 技能 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/intermediate-and-advanced-git/

介紹一個視頻系列,以提高您在 Visual Studio 中的 Git 和 GitHub 技能。

避免增量生成器中的性能陷阱:創建源生成器 - 第 9 部分

https://andrewlock.net/creating-a-source-generator-part-9-avoiding-performance-pitfalls-in-incremental-generators/

瞭解如何避免增量源生成器的性能陷阱。

本文介紹了使用 Source Generator 的 API 時的執行模式以及性能方面需要注意的事項。

測試增量生成器管道輸出是否可緩存:創建源生成器 - 第 10 部分

https://andrewlock.net/creating-a-source-generator-part-10-testing-your-incremental-generator-pipeline-outputs-are-cacheable/

有關如何使增量源生成器管道輸出可緩存的說明。

[Rider] 如何調試 SourceGenerator - Qiita

https://qiita.com/amenone_games/items/0a99f38fd08911b62c3a

瞭解如何使用 JetBrains Rider 調試源生成器。

2023 年 Visual Studio 生產力功能 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/visual-studio-productivity-features-in-2023/

一篇文章總結了 2023 年發佈的 Visual Studio 2022 與生產力相關的功能。

通過啓用 ETW 分析 WPF 性能 | endjin

https://endjin.com/blog/2024/01/wpf-performance-enable-etw

使用 ETW 衡量 WPF 性能的步驟說明。如何從 ETW 獲取數據並將其顯示在 PerfView 中。

使用 Porting Assistant for .NET CLI 支持不支持的組件 - Qiita

https://qiita.com/miyamacchi/items/99c098ebab1c4f8053f9

有關如何啓用 AWS Porting Assistant for .NET 來處理不受支持的 ASP.NET 控件的說明。

刪除 Windows 資源管理器中不存在的文件(第 1 部分)- Qiita

https://qiita.com/miswil/items/b97dd4914a335fa21790

說明如何將非真實文件的數據從應用程序傳遞到放置目標(例如資源管理器)。

.NET 中的 1BRC 在 Linux 上速度最快:我的優化之旅

https://hotforknowledge.com/2024/01/13/1brc-in-dotnet-among-fastest-on-linux-my-optimization-journey/

十億行挑戰(在各種實現中聚合 10 億行數據的挑戰)解釋了使用 .NET 的實現優化技術。

歡迎來到 ReSharper 2024.1 搶先體驗計劃 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2024/01/19/resharper-2024-1-eap1/

ReSharper 2024.1 EAP 公告。

2024.1 EAP 1 包括側重於 C++ 支持的改進。

我想在 C# 主構造函數上設置屬性

https://zenn.dev/microsoft/articles/primary-constructor-attr

如何在 C# 12 中指定主構造函數方法本身的屬性。

17.9 Preview 3 爲代碼搜索帶來了令人興奮的變化 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/17-9-preview-3-brings-exciting-changes-to-code-search/

在 Visual Studio 2022 17.9 Preview 3 中引入代碼搜索的文本搜索增強功能。

攔截器 – 在 Rider 和 ReSharper 中使用 C# 12 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2024/01/16/interceptors-using-csharp-12-in-rider-and-resharper/

引入了對 Rider 和 ReSharper 的 C# 12 預覽功能攔截器支持。

Rider 和 ReSharper 可以在攔截器目標上顯示嵌入提示。

用 C# 構建一個小於 2 KB 的獨立遊戲

https://migeel.sk/blog/2024/01/02/building-a-self-contained-game-in-csharp-under-2-kilobytes/

如何使用 C# 創建 2KB 獨立(無需運行時)的遊戲應用程序。

如何將 IAsyncEnumerable 與 Blazor 流渲染結合使用

https://khalidabuhakmeh.com/how-to-use-iasyncenumerable-with-blazor-stream-rendering

如何在 Blazor 中渲染 IAsyncEnumerable 中的值。

使用 WireMock.NET 模擬 GraphQL 查詢

https://cezarypiatek.github.io/post/mocking-graphql-with-wiremock/

瞭解如何使用 WireMock.NET 模擬 GraphQL 查詢。

初始化數組(也初始化List、IList、ImmutableArray等)《C#12》《集合表達式》 - Qiita

https://qiita.com/muniel/items/8af5b337d9bbbfbd2812

關於 C# 12 中的集合表達式。它涉及到如何寫、可以使用和不可以使用的模式等等。

如何使用 Blazor Server 從 .NET 7 遷移到 .NET 8 - Qiita

https://qiita.com/yaju/items/762d48ecda8b9c59279a

瞭解將 Blazor 服務器從 .NET 7 遷移到 .NET 8 時遇到的問題以及如何解決這些問題。

使用.NET 8構建WinUI 3應用程序(NETSDK1083對策)

https://zenn.dev/shinta0806/articles/dotnet8-netsdk1083

關於使用 .NET 8 構建 WinUI 3 應用程序時可能出現的錯誤以及如何處理這些錯誤。

探索.NET 凍結段

https://minidump.net/exploring-frozen-segments/

本文介紹如何使用私有 API 來使用包含不受 GC 影響的堆的固定段(在 .NET 8 中引入)。

.NET Continuous Profiler:幕後花絮 | Datadog

https://www.datadoghq.com/en/blog/engineering/dotnet-continuous-profiler/

.NET 探查器架構及其實現方式的簡要說明。

neue cc - 在 .NET 和 Unity 項目之間共享源代碼的最新方法

https://neue.cc/2024/01/15_shareprojectinunity.html

一種在 .NET 和 Unity 項目之間共享源代碼的方法。以及在開發 NuGet 包時如何從 Unity 引用它。

活動

在午休期間使用 C# 從頭開始​​創建 Blazor WebAssembly Web 應用程序 (2024/02/09 12:00~)

https://msdevjp.connpass.com/event/308241/

在相對較短的時間內使用 C# 和 Blazor WebAssembly 創建 Web 應用程序。

據說它相當於 Let's Learn .NET(面向初學者的發行系列)的日語本地化版本。

庫、存儲庫、工具等。

網站、文檔等

免費學習響應式編程:Rx.NET 第二版簡介 (2024) | endjin

https://endjin.com/blog/2024/01/introduction-to-rx-dotnet-2nd-edition-book-available-for-free

Rx.NET 第二版簡介電子書。

推文

嘗試配置 C++ 應用程序項目以引用 NativeAOT C# 庫。

https://x.com/mstrehovsky/status/1749739317180891232?s=12

image-20240204213358371


Visual Studio 工具窗口已停靠/浮動,並且可以使用 Ctrl + 雙擊將其移動到其原始位置。
https://x.com/mkristensen/status/1747701018815848592?s=12

image-20240204213417798


https://x.com/egorbo/status/1746918915266252834?s=12

image-20240204213435766

新版本的 Disasmo 支持 NativeAOT,無需自定義運行時!只需將光標放在任何方法上,然後單擊 Shift+Alt+D!(之後當然安裝了 Disasmo VS 插件 😉)

版權聲明

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

image-20230703203249615

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章