當前位置: 妍妍網 > 碼農

.NET周刊【7月第1期 2024-07-07】

2024-07-11碼農

國內文章

學習.NET 8 MiniApis入門

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

MiniApis是ASP.NET Core中的輕量級框架,用最少的程式碼和配置建立HTTP API。其特點包括簡潔明了、效能卓越、靈活多變、易於學習使用,並與ASP.NET Core生態系完美整合。適用於微服務、原型開發、簡單的CRUD套用、無伺服器函式及物聯網裝置通訊。透過簡單程式碼範例,展示其建立API的便捷性。環境搭建部份介紹系統要求及安裝.NET SDK步驟,準備好開發者的環境。

C#/.NET/.NET Core優秀計畫和框架2024年6月簡報

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

文章介紹了一系列C#/.NET/.NET Core優秀計畫和框架,每周定期透過公眾號分享。每個計畫都有簡介、特點、源碼地址和公眾號詳細介紹。內容包括CsvHelper、ModernWpf、HyggeImaotai、WatchDog、Dorisoy.Pan等。

基於Bootstrap Blazor開源的.NET通用後台許可權管理系統

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

文章介紹了基於Bootstrap Blazor的.NET通用後台許可權管理系統,具有響應式布局,可切換多Tabs模式,許可權控制細化到網頁內任意元素。該計畫基於Bootstrap和Blazor,包含多種功能模組,並支持多種資料庫。計畫預設支持SQLite,可直接偵錯執行,提供計畫源碼和下載地址。文中還提到DotNetGuide技術社群,提供C#/.NET/.NET Core相關學習資料和技術交流平台。

WPF在.NET9中的重大更新:Windows 11 主題

https://www.cnblogs.com/mingupupu/p/18277446

2023年2月20日,WPF團隊在討論區對未來工作的優先級進行投票,最終決定優先開發Windows 11主題。在2023年12月13日,宣布與WPFUI合作開發該主題。在Build 2024展示相關視訊和WPF Gallery,並於2024年5月17日在微軟商店釋出預覽版。WPF的Win11主題適用於.NET 9 Preview 4及其以上版本,是學習WPF的好計畫,能幫助開發者建立一致性更高、界面更美觀的套用。

記一次 .NET某網路邊緣計算系統 卡死分析

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

文章介紹了網路邊緣計算的背景及其在.NET中的套用,然後透過WinDbg分析一個Linux上部署的Web網站卡死的問題。透過分析主執行緒呼叫棧和執行緒池的狀態,作者推斷卡死可能由於執行緒饑餓或執行緒池耗盡引起。

一款EF Core下高效能、輕量級針對分表分庫讀寫分離的解決方案

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

本文介紹了EF Core下高效能、輕量級的分表分庫讀寫分解離決方案ShardingCore。ShardingCore是一款開源的EF Core擴充套件程式包,支持EF Core2+的所有版本和資料庫,支持自訂路由、動態路由、高效能分頁和讀寫分離。計畫特點包括零依賴、零學習成本和零業務程式碼入侵。文章還分享了如何快速上手使用ShardingCore在AspNetCore中實作按月分表的實操步驟。

在C#中使用RabbitMQ做個簡單的發送信件小計畫

https://www.cnblogs.com/ZYPLJ/p/18279034

文章介紹了如何在C#中使用RabbitMQ發送信件,包括計畫的架構圖和詳細程式碼。計畫分為生產者、RabbitMQ伺服器和消費者三個部份。生產者負責將信件請求發送到RabbitMQ佇列,消費者從佇列中接收並執行發送操作。文章還提供了關鍵程式碼,如RabbitMQ連線配置和信件發送服務的實作。

基於 .net core 8.0 的 swagger 文件最佳化分享-根據名稱空間分組顯示

https://www.cnblogs.com/morang/p/18284628/netcore8-swagger-group-namespace-show

公司計畫使用.net core webapi和refit封裝20+服務SDK,提供swagger文件。之前文件能正常存取,後來只能在本地開啟或存取原始swagger頁面。使用Swashbuckle.AspNetCore生成SwaggerUI,詳細介紹了從安裝、包參照、服務配置到最終啟用swagger的步驟和程式碼範例。

.NET App 與Windows系統媒體控制(SMTC)互動

https://www.cnblogs.com/TwilightLemon/p/18279496

本文介紹了如何在Windows套用中使用SMTC與系統媒體互動。首先解釋了SMTC在UWP App中的使用方法,接著指出XxxForCurrentView方法不適用於桌面套用。透過MediaPlayer可以繞過這些限制,自動整合SMTC,並方便與已有解碼器配合使用。文中提供了呼叫WinRT API的方法和範例程式碼,詳細展示了SMTC物件的建立、設定互動性、更新媒體資訊和響應使用者互動等步驟。

動手學Avalonia:基於SemanticKernel與矽基流動構建AI聊天與轉譯工具

https://www.cnblogs.com/mingupupu/p/18281546

本文介紹了Avalonia作為跨平台UI框架,並比較其與WPF的關系。接著,介紹了Semantic Kernel SDK及其功能,並詳細討論了矽基流動的AI基礎設施及SiliconCloud平台。作者提到在SemanticKernel中使用SiliconCloud的API服務,提供了具體程式碼實作,最後展示了基於大模型的聊天套用頁面構建方法。

C#開發一個混合Windows服務和Windows表單的程式

https://www.cnblogs.com/yiluxiangdong/p/18286736

文章介紹了如何建立一個同時支持Windows服務和Windows表單的混合程式。透過判斷行程會話ID、當前使用者名稱、使用者互動模式和啟動參數來決定執行模式。如果條件滿足則進入服務模式,否則進入表單模式。計畫需要參照System.Configuration.Install、System.ServiceModel和System.ServiceProcess,並包含多個類檔來實作不同功能,包括Program.cs、MainService.cs、MainForm.cs、MainWorker.cs和ServiceInstaller.cs,提供了部份程式碼範例。

實作Quartz.NET的HTTP作業排程

https://www.cnblogs.com/INetIMVC/p/18281699

該文章介紹如何使用Quartz.NET進行HTTP作業排程。主要內容包括定義HttpJob類來執行HTTP請求,持久化作業資訊,並透過QuartzHelper類管理作業的生命周期,如載入、建立、排程、暫停和刪除作業等。

Asp .Net Core 系列:基於 Castle DynamicProxy + Autofac 實踐 AOP 以及實作事務、使用者填充功能

https://www.cnblogs.com/vic-tory/p/18284779

本文介紹了 AOP 的概念及其在 .Net Core 中的套用。討論了幾種 AOP 框架,如 PostSharp、Castle DynamicProxy 和 AspectCore Framework。詳細展示了如何基於 Castle DynamicProxy 實作 AOP,包括安裝所需的 NuGet 包、定義介面和類、建立攔截器、以及在 IOC 中的使用方法。透過程式碼範例,解釋了如何透過代理類和攔截器擴充套件功能,實作如事務管理等橫切關註點。

Rougamo、Fody 實作靜態Aop

https://www.cnblogs.com/KarlAlbright/p/18277740

文章介紹了Rougamo框架及其靜態編織AOP功能。首先解釋了AOP和靜態編織的概念,並對Rougamo進行了詳細說明。Rougamo透過Fody和Mono.Cecil在編譯階段嵌入程式碼實作AOP功能。文章展示了如何建立控制台程式並安裝Rougamo.Fody,以及使用LoggingAttribute類對方法進行攔截和日誌記錄。最後,文章簡要提及了FodyWeavers.xsd和FodyWeavers.xml檔的生成。

中台框架模組開發實踐-用 Admin.Core 程式碼生成器生成通用程式碼生成器的模組程式碼

https://www.cnblogs.com/morang/p/18277156/zhontai_admin_core_module_dev_use_toproject

這篇文章討論了基於Admin.Core程式碼生成器開發一個通用程式碼生成器模組的過程。作者首先介紹了計畫需求,並提供了相關的程式碼和資料庫設定。文章詳細描述了程式碼生成器如何支持DBFirst和CodeFirst兩種方式生成配置,並展示了生成程式碼和數據模型的具體步驟。透過json匯入匯出功能,使用者可以方便地進行配置的復制和匯入。最後,作者還提供了程式碼生成器的相關配置範例,幫助讀者快速上手並實作計畫開發。

記一次aspnetcore釋出部署流程初次使用k8s

https://www.cnblogs.com/morec/p/18285969

這篇文章介紹了如何在aspnetcorewebapi計畫中,使用Gitlab和Jenkins實作CI/CD,並透過Docker和K8s部署。文中詳細描述了計畫的初始化、Dockerfile和k8s.yaml檔的編寫,以及Gitlab和Jenkins的配置。提到了在本地使用Docker Desktop驗證Dockerfile,並說明了Gitlab的容器ID配置問題。最後,提供了Gitlab CI/CD以及Runner的註冊方法。

如何讓其他模型也能在SemanticKernel中呼叫本地函式

https://www.cnblogs.com/mingupupu/p/18286405

文章介紹了如何使用SemanticKernel與Azure OpenAI進行本地函式呼叫。透過範例程式碼展示了建立內核、添加外掛程式和啟用規劃功能。作者分享了實踐經驗,指出除了OpenAI和Moonshot AI外,其他模型的本地函式呼叫無效。作者提到在討論區中發現很多人也有類似需求,並提供了一個計畫連結,該計畫可以整合到語意內核中實作基於LLMs聊天的函式呼叫。作者嘗試並成功使用該計畫中的類和外掛程式。

Simple WPF: WPF 透明表單和滑鼠事件穿透

https://www.cnblogs.com/mrchip/p/18278976

本文提供了一個自訂WPF表單的解決方案,增加了透明背景和滑鼠穿透功能。它借鑒了呂毅老師的文章,詳細介紹了去除標題列、設定表單透明背景和內容樣版的步驟,並透過引入user32.dll設定視窗內容,使滑鼠事件穿透到下層表單中。程式碼及演示效果在Github提供。

【譯】在偵錯時輕松導航程式碼委托

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

委托是表示對方法參照的型別,類似 C++ 函式指標,支持物件導向。Func 和 Action 是常用委托型別。最新 Visual Studio 更新簡化了偵錯時跟蹤委托程式碼。使用者可透過開發者社群或 Twitter 提供反饋。

Simple WPF: WPF 自訂按鈕外形

https://www.cnblogs.com/mrchip/p/18288981

本文透過WPF的按鈕樣版與樣式定義,詳細介紹如何使用 style和ResourceDictionary自訂WPF按鈕的外觀。透過提供程式碼範例展示了扁平化按鈕樣式和用Polygon自訂Button外形的方法。

C#的多執行緒UI表單控制項顯示方案 - 開源研究系列文章

https://www.cnblogs.com/lzhdim/p/18275194

為了在新執行緒中上傳檔到FTP伺服器並更新主執行緒UI,作者提出了一種高級用法,將執行緒操作放在獨立類中,主執行緒負責UI顯示。此文詳細記錄了計畫目錄、源碼介紹、執行界面及使用方法。

C#開發單例項應用程式並響應後續行程啟動參數

https://www.cnblogs.com/yiluxiangdong/p/18288392

C#預設WinForm樣版不支持單例項,有多種實作方法,如檢測同名行程、命名互斥鎖、釘選檔、使用WindowsFormsApplicationBase類。詳細介紹了WindowsFormsApplicationBase類的用法及其常用內容和方法。包括建立單例項應用程式的詳細步驟和各類程式碼範例。

使用EF 連線 資料庫 SQLserver、MySql 實作 CodeFirst

https://www.cnblogs.com/motion/p/18281201

文章介紹了如何建立一個基於 .NET Framework 的計畫,並使用 EntityFramework Code First 方法與 MySQL 資料庫進行互動。具體步驟包括新建計畫、下載和配置所需的 NuGet 包、設定 App.config 或 Web.config 檔、建立 EF Model 以及測試資料庫操作如查詢、添加、更新和刪除數據。

Log4Net配置詳解及輸出自訂訊息類範例

https://www.cnblogs.com/letmebaby/p/18278934

本文介紹了如何添加log4net.dll的參照,並展示了簡單的log4net配置檔範例。透過NuGet程式包管理器搜尋log4net並添加參照,隨後在計畫中添加log4net.config配置檔。配置檔範例展示了如何定義logger和appender,以控制日誌的輸出等級和方式。

主題

版本 1.6 實驗 (1.6.0-experimental2) - Windows 套用 SDK 最新實驗通道發行說明 - Windows 套用 Microsoft Learn

https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/experimental-channel#version-16-experimental-160-experimental2

Windows App SDK 1.6.0-experimental2 已釋出。

此版本改進了 NativeAOT 支持、更改了 Edge WebView2 SDK 整合、添加了包部署 API 並修復了錯誤等。

此外,從此版本開始,microsoft-ui-xaml GitHub 儲存庫的主分支將包含 WinUI 3 原始碼。

ReSharper 2024.2 EAP 5:重要裏程碑和其他更新 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2024/07/01/resharper-2024-2-eap-5/

ReSharper 2024.2 EAP 5 已釋出。

此版本支持異步輸入作為行程外的一部份。據說這可以提高響應能力。

其他改進包括增強重構和在動態程式分析中使用人工智慧。

Rider 2024.2 EAP 5:閱讀器模式、遊戲開發監控等 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2024/07/01/rider-2024-2-eap-5/

Rider 2024.2 EAP 5 已釋出。

此版本添加了閱讀器模式,可在庫中顯示程式碼時擴充套件文件註釋、監視視窗的增強功能以及 GDScript 偵錯支持。

版本 8.4.1 · App-vNext/Polly

https://github.com/App-vNext/Polly/releases/tag/8.4.1

Polly 8.4.1 已釋出。

此版本修復了多個錯誤。

文章、投影片等

自制.NET CLI工具(PowerShell版)添加tab補全功能 - Qiita

https://qiita.com/pierusan2010/items/0885a78d5616601d013a

如何在 CLI 工具中實作 PowerShell 索引標籤完成支持。

.NET MAUI Android 中的動畫啟動螢幕

https://dev.to/icebeam7/animated-splash-screen-in-net-maui-android-2ipg

如何將 Android 12 中的閃屏 API 與 .NET MAUI 結合使用。

透過新的 WinUI 工作負載和樣版改進深入研究本機 Windows 開發 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/dive-into-native-windows-development-with-new-winui-workload-and-template-improvements/

在 Visual Studio 17.10 中引入新的 WinUI 應用程式樣版。

.NET MAUI 中的所有列表

https://dev.to/davidortinau/all-the-lists-in-net-maui-33bd

.NET MAUI 中各種列表控制項的比較和布局範例。

如何使用 JetBrains Rider 中的任務檢視 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2024/07/02/how-to-use-the-tasks-view-in-jetbrains-rider/

引入任務檢視,它允許您檢查 Rider 中正在執行/等待的任務(異步)。

探索生成的程式碼:擴充套件元素:集合運算式的幕後 - 第 4 部份

https://andrewlock.net/behind-the-scenes-of-collection-expressions-part-4-the-spread-element/

解釋 C# 12 集合運算式擴充套件運算子生成的程式碼。

一個關於能夠透過 UnsafeAccessor 使用泛型的故事 - Qiita

https://qiita.com/abetakahiro123/items/e7df363efa80e94ccf06

關於在 .NET 9 Preview 4 中使用 UnsafeAccessor 對泛型執行操作的能力。

讓 GitHub Copilot 起草您的拉取請求描述 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/let-github-copilot-draft-of-your-pull-request-description/

引入 Visual Studio 版本 17.10 中實作的功能,該功能允許 GitHub Copilot 編寫拉取請求評論草稿。

C# 中的 MemoryCache:實用指南

https://blog.postsharp.net/memorycache

關於記憶體緩存 System.Runtime.Caching.MemoryCache 是什麽以及如何使用它的指南。

駕馭企業巨頭 - CoRecursive 播客

https://corecursive.com/building-powershell-with-jeffrey-snover/

Jeffery Snover 作為嘉賓談論 PowerShell 誕生的播客節目的文字記錄。

.NET 9 中的 ReadOnlySet<T>

https://steven-giesel.com/blogPost/f368c7d3-488e-4bea-92b4-abf176353fa3

關於 .NET 9 中引入的「 ReadOnlySet<T> 」。它還涉及到與 IReadOnlySet 的關系以及與 ImmutableSet/FrozenSet 的區別。

C# 中的 WaitHandle 等待執行緒調查 - Qiita

https://qiita.com/qiitatosh/items/c1c08d0e3caa928b5d63

關於使用 WaitHandle 等待執行緒。

使用 C# 標記將 .NET MAUI 應用程式重構為聲明式 UI

https://appmilla.com/latest/refactoring_a_function_and_reactive_dotnet_maui_app_to_a_declarative_ui_using_csharp_markup/

介紹使用 .NET MAUI 社群工具包中的 C# 標記重構應用程式。

本文還涉及熱多載期間的控制行為。

使用 C# 封裝外部 DLL,以便與 Node.js 無縫整合 Electron 應用程式

https://medium.com/@avihup/wrapping-external-dlls-with-c-for-seamless-integration-in-electron-applications-with-node-js-9483bba343bb

如何使用 Electron-edge-js 將外部本機 DLL 公開給 Electron 應用程式。

如何從 C# 生成 Windows 執行時異步活動 - 老新事物?

https://devblogs.microsoft.com/oldnewthing/20240704-00/?p=109955

如何從 C# 異步生成 Windows 執行時異步活動(「IAsyncAction」、「IAsyncOperation」)。

Azure Functions 中對 .NET In-Process 的 .NET 8 支持已釋出 - Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20240703/1719992771

了解 Azure Functions 中 .NET 行程內模型的 .NET 8 支持和遷移。

.NET 中的唯讀、不可變和凍結集合 - NDepend 部落格

https://blog.ndepend.com/readonly-immutable-and-frozen-collections-in-net/

解釋 ReadOnly、Immutable 和 Frozen 等各種集合之間的差異及其效能特征。

活動、YouTube 發行等。

午休時間試試.NET Aspire (2024/07/11 12:00~)

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

網站、文件等

推文

WinMerge 現在支持 F# 語法突出顯示。

https://x.com/Thoriumi/status/1805201201186632184

深入探索

Poly 填充索引和範圍型別 by tarekgh · Pull Request #104170 · dotnet/runtime

https://github.com/dotnet/runtime/pull/104170

向 Microsoft.Bcl.Memory 添加了索引和範圍填充。

版權聲明

  • 國內板塊由 InCerry 進行整理 : https://github.com/InCerryGit/.NET-Weekly

  • 其余內容來自 Myuki WeekRef,由InCerry轉譯(已獲得授權) : https://github.com/mayuki/WeekRef.NET

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