.NET週報 【5月第2期 2023-05-14】

2023-05-16 15:00:24

國內文章

XUnit資料共用與並行測試

https://www.cnblogs.com/podolski/p/17388602.html

在單元或者整合測試的過程中,需要測試的用例非常多,如果測試是一條一條過,那麼需要花費不少的時間。從 V2 開始,預設情況下 XUnit 自動設定並行(參考資料),大大提升了測試速度。本文將對 ASP.NET CORE WEBAPI 程式進行整合測試,並探討 XUnit 的資料共用與測試並行的方法。

在 ASP.NET Core Web API 中處理 Patch 請求

https://www.cnblogs.com/alby/p/Patch-in-ASP-NET-Core-web-API.html

在 ASP.NET Core Web API 中,由於 C# 是一種靜態語言(dynamic 在此不表),當我們定義了一個型別用於接收 HTTP Patch 請求引數的時候,在 Action 中無法直接從範例中得知使用者端提供了哪些引數。

記一次 某智慧製造MES系統CPU 爆高分析

https://www.cnblogs.com/huangxincheng/p/17395212.html

前段時間有位朋友找到我,說他 docker 中的web服務深夜cpu被打滿,讓我幫忙看一下,很多朋友問docker中怎麼抓dump,我一般都推薦使用 procdump 這款自動化工具,誰用誰知道,有了 dump 之後,接下來就是分析了。

推薦一個.Ner Core開發的設定中心開源專案

https://www.cnblogs.com/chingho/p/17110126.html

當你把單體應用改造為微服務架構,相應的組態檔,也會被分割,被分散到各個節點。這個時候就會產生一個問題,設定資訊是分散的、冗餘的,變成不好維護管理。這個時候我們就需要把設定資訊獨立出來,成立一個設定中心。這是一個基於.Net Core開發的,輕量級設定中心、部署使用簡單方便。該專案只具備必要的功能,主要用於輕量級的專案。

C#使用詞嵌入向量與向量資料庫為大語言模型(LLM)賦能長期記憶實現私域問答機器人落地

https://www.cnblogs.com/gmmy/p/17385868.html

本文將探討如何使用C#開發基於大語言模型的私域聊天機器人落地。大語言模型(Large Language Model,LLM 這裡主要以ChatGPT為代表的的文字生成式人工智慧)是一種利用深度學習方法訓練的能夠生成人類語言的模型。這種模型可以處理大量的文字資料,並學習從中獲得的模式,以預測在給定的文字上下文中最可能出現的下一個詞。 在一般場景下LLM可以理解使用者提出的問題並生成相應的回答。然而由於其訓練時的資料限制LLM無法處理特定領域的問題。因此我們需要探索一種方法讓LLM能夠獲取並利用長期記憶來提高問答機器人的效果。

聊一聊 dotnet-trace 調查 lock鎖競爭

https://www.cnblogs.com/huangxincheng/p/17384543.html

最近在分析一個 linux 上的 dump,最後的誘因是大量的lock鎖誘發的高頻上下文切換,雖然問題告一段落,但我還想知道一點資訊,所謂的高頻到底有多高頻?鎖競爭到底是一個怎樣的鎖競爭? 如果瞭解這些資訊對我們後續分析此類問題非常有幫助。

如何將C#線上編輯器嵌入自己專案

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

首先我們需要介紹一下這個線上編輯器,當前的線上編輯器支援c#的程式碼編譯執行,並且無需後臺服務,基於WebAssembly實現的在瀏覽器端去執行我們的c#程式碼,基於Roslyn提供的Api封裝一套簡單的編譯,並且封裝了js的支援,讓嵌入的方式更簡單。

C#非同步有多少種實現方式?

https://www.cnblogs.com/Can-daydayup/p/17383651.html

微信群裡的一個提問引發的這個問題,有同學問:C#非同步有多少種實現方式?想要知道C#非同步有多少種實現方式,首先我們要知道.NET提供的執行非同步操作的三種模式,然後再去了解C#非同步實現的方式。

主題

【英文】釋出 v1.3.1 microsoft/WindowsAppSDK

https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.3.1

Windows App SDK v1.3.1 釋出。

此版本包括一些崩潰問題的修復、模板更新等。

【英文】Visual Studio UI 重新整理 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-ui-refresh/

宣佈更新 Visual Studio 使用者介面的計劃。

未來,我們計劃更新 Visual Studio 的 UI 以符合 Fluent Design,分享當前的設計方案並接收反饋。

【英文】即將在 Windows 更新和目錄上提供 .NET Framework 4.8.1 - .NET 部落格

https://devblogs.microsoft.com/dotnet/upcoming-availability-of-net-framework-4-8-1-on-windows-update-and-catalog/

宣佈可從 Windows 更新和 Windows 更新目錄獲取 .NET Framework 4.8.1。

.NET Framework 4.8.1 將在未來幾周內從 Windows Update 和 Windows Update Catalog 中提供。交付將從 Windows Insider Preview 的 Release Preview 推出。

文章包括下載說明、語言套件、阻止自動更新和常見問題解答。

文章、幻燈片等

【日文】使用 Azure.AI.OpenAI 包連線到 OpenAI 和 Azure OpenAI 服務的區別

https://zenn.dev/microsoft/articles/howtouser-azure-ai-openai

Azure.AI.OpenAI NuGet 包同時支援 OpenAI API 和 Azure OpenAI Service,但在設定使用時存在一些差異。

【英文】使用 Polyglot Notebooks 和 SandDance 在 dotnet 中視覺化資料

https://dev.to/integerman/visualizing-data-in-dotnet-with-polyglot-notebooks-and-sanddance-55k9

瞭解如何通過 C# 程式碼在 Polyglot Notebooks 中使用資料視覺化庫 SandDance。

【英文】通過快速工程升級您的 GPT 遊戲 - .NET 部落格

https://devblogs.microsoft.com/dotnet/gpt-prompt-engineering-openai-azure-dotnet/

關於在呼叫 OpenAI 的 ChatGPT 時有幫助的提示工程。

【英文】加入我們的 HackTogether:Microsoft Teams Global Hack - .NET 部落格

https://devblogs.microsoft.com/dotnet/hacktogether-microsoft-teams-global-hack/

關於 Microsoft Teams 虛擬駭客馬拉松活動。

6 月 1 日以主題演講開始的活動將在 15 日之前制定和提交。將準備幾個部委,併為獲獎者頒發獎品。

【日文】我想用.NET的option pattern驗證設定是否正確

https://zenn.dev/microsoft/articles/options-pattern-validation

關於如何使用 Microsoft.Extensions.Options(包括 ASP.NET Core)通過選項模式驗證設定值。

本文介紹瞭如何使用 Microsoft.Extensions.Options.DataAnnotations 通過 DataAnnotations 進行驗證。

【日文】如何使用 EF Core 正確更新 - Qiita

https://qiita.com/jun1s/items/3e2b3702a965bb5e2705

如何從分離的實體更新,如何從分離的實體更新,以及如何在 Entity Framework Core 中錯誤地使用 Update 方法。

【英文】環繞選擇實驗 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/surround-selection-experiment/

關於實現圍繞選擇範圍輸入的功能。

我們在實際將它們合併到產品中之前提供實驗性擴充套件,驗證它們可以應用於所有語言,並徵求反饋。

【英文】ASP.NET Core 7.0 中的 API 版本控制和 Swagger

https://mohsen.es/api-versioning-and-swagger-in-asp-net-core-7-0-fe45f67d8419

在 ASP.NET Core 中提供版本化的 API,並說明使 Swagger 與 Bearer 身份驗證結合使用的過程。

【英文】2019-2022 年 10 大 C# 會議演講

https://unicorn-dev.medium.com/top-10-c-conference-talks-2019-2022-78c049b2d6e9

2019 年至 2022 年 10 場 C# 相關會議。

【英文】如何在展示程式碼時像專家一樣使用 Visual Studio

https://dev.to/this-is-learning/how-to-use-visual-studio-like-a-pro-when-presenting-your-code-5955

如何提供在簡報中使用 Visual Studio 的模式。

【英文】.NET 中的現代最小工作者 | Anthony Simon

https://anthonysimmon.com/dotnet-minimal-workers/

如何使用通用主機和頂級語句實現 Worker 型別的應用程式。

【日文】語意核心 v0.13.442.1-preview 釋出

https://zenn.dev/microsoft/articles/semantic-kernel-12

關於語意核心 v0.13.442.1-preview 中的更新。

關於 gRPC 可以作為一項技能載入,Azure 認知搜尋可以用作語意記憶,完成流支援等。

【英文】如何開始使用 .NET 後臺服務 | .NET 工具部落格

https://blog.jetbrains.com/dotnet/2023/05/09/dotnet-background-services/

關於如何開始開發在通用主機後臺處理的 BackgroundService。

【英文】.NET MAUI WebViews:如何全螢幕播放視訊

https://dev.to/vhugogarcia/net-maui-webviews-how-to-play-videos-in-full-screen-1j03

如何在 .NET MAUI 中使用 Android WebView 進行全螢幕視訊播放。

【英文】如何在 .NET 中使用 WinSCP 從安全 FTP 伺服器 (SFTP) 下載檔案

https://juldhais.net/how-to-download-files-from-secure-ftp-server-sftp-using-winscp-in-net-895fbb44362c

如何使用 WinSCP 的 .NET 指令碼庫從 SFTP 伺服器下載檔案。

尋找.NET中的記憶體漏失

https://chnasarre.medium.com/raiders-of-the-lost-root-looking-for-memory-leaks-in-net-28febafebac1

如何使用 C++ Profiler API 跟蹤物件參照並查詢記憶體漏失。

【英文】面向 C# 開發人員:defer 不是 IDisposable

https://blog.cellfish.se/2023/05/go-for-c-developers-defer-is-not.html

關於Go的defer和C#的IDisposable(using)的區別。乍一看,這似乎是一種誤解,但 defer 是函數作用域的。

【英文】閱讀 .NET 中 exe 的 Windows 應用程式清單 - Gérald Barré

https://www.meziantou.net/reading-windows-application-manifest-of-an-exe-in-dotnet.htm

如何使用 Win32 API 讀取可執行 (.exe) 檔案的清單檔案。

【日文】從 C# 開始的並行化:目錄

https://zenn.dev/k_taro56/articles/vetcorized-csharp-introduction

關於使用 SIMD 進行並行化的系列文章。

活動

.NET 實驗室學習會議 2023 年 5 月 - connpass

https://dotnetlab.connpass.com/event/281932/

線上學習會議將於 5 月 27 日星期六舉行。

  • 使用 Tanzu Application Platform 和 Azure Spring Apps 提高微服務應用程式開發的敏捷性
  • C# 的 async/await 是如何工作的
  • 首次使用 C# 和 Unity 開發遊戲
  • 嘗試將 Azure OpenAI 服務的 GTP-4 與語意核心 (C#) 結合使用## 庫、儲存庫、工具等。

ChatGPT API 使用者端應用「TmCGPT Debugger」v2.0-beta

https://zenn.dev/jun_murakami/articles/a5ca626eb8204b

在 Avalonia UI 中實現的 ChatGPT API 使用者端。

站點、檔案等

推文

.NET 8 中的一種託管堆。

https://twitter.com/egorbo/status/1657007196171902976?s=12


新增了 Visual Studio 支援的 .http 檔案的檔案。

https://twitter.com/sayedihashimi/status/1656751184697339905?s=12

深入探索

通過 jkotas Pull Request 刪除 Windows arm32 支援 #86065 dotnet/runtime

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

在 Windows 上刪除 ARM32 支援的 PR,它在 .NET 6 及更早版本中已棄用。

https://twitter.com/egorbo/status/1656456755835027457?s=12

版權宣告

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.NET週報-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源專案可以下方的專案地址提交Issue或者在我的微信公眾號私信。

格式如下:

  • 10~50字左右的標題
  • 對應文章或專案網址存取連結
  • 200字以內的簡介,如果太長會影響閱讀體驗

https://github.com/InCerryGit/.NET-Weekly

.NET效能優化交流群

相信大家在開發中經常會遇到一些效能問題,苦於沒有有效的工具去發現效能瓶頸,或者是發現瓶頸以後不知道該如何優化。之前一直有讀者朋友詢問有沒有技術交流群,但是由於各種原因一直都沒建立,現在很高興的在這裡宣佈,我建立了一個專門交流.NET效能優化經驗的群組,主題包括但不限於:

  • 如何找到.NET效能瓶頸,如使用APM、dotnet tools等工具
  • .NET框架底層原理的實現,如垃圾回收器、JIT等等
  • 如何編寫高效能的.NET程式碼,哪些地方存在效能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET效能問題和寶貴的效能分析優化經驗。目前一群已滿,現在開放二群。

如果提示已經達到200人,可以加我微信,我拉你進群: ls1075

另外也建立了QQ群,群號: 264167610,歡迎大家加入。