.NET周刊【6月第5期 2025-06-29】

国内文章

为什么说方法的参数最好不要超过4个?

https://www.cnblogs.com/lmy5215006/p/18919081

本文探讨了调用协定的概念,包括参数传递方式、栈清理和寄存器使用。介绍了不同架构下的调用协定,例如x86的多种调用协定如__cdecl、__stdcall和__fastcall,及其各自的特点和适用场景。同时也分析了x64架构的统一调用协定,区分了Windows与Linux的实现。此外,文章指出了C#在x86下使用的独特调用协定。通过示例代码,作者清晰展示了不同调用协定的实现方式,增强读者理解。整体内容技术深度适中,清晰易懂。

一个基于 .NET 8 开源免费、高性能、低占用的博客系统

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

Masuit.MyBlogs是一个基于.NET 8的开源博客系统。它高性能、高安全性,低内存占用,仅3MB代码量。系统可处理每天80-600万次请求,支持60-600名活跃用户。主要功能包括服务器性能监控、文章管理、评论审核、消息通知和广告管理等。项目使用.NET 8、ASP.NET Core MVC等技术。作者鼓励用户访问GitHub开源地址以支持项目并获取更多信息。

.NET 8 gRPC 实现高效100G大文件断点续传工具

https://www.cnblogs.com/1312mn/p/18943708

本文介绍了一个基于.NET gRPC技术的大文件断点续传工具,旨在解决传统文件传输方式在大文件上传中的问题。该工具支持最大100GB文件的高效传输,具备在中断后续传的功能。项目采用WinForm构建前端,ASP.NET Core gRPC实现后端,确保了传输的稳定性和可靠性。工具实现了文件分块上传、实时进度显示和数据校验等功能,使用SQLite持久化传输状态,增强用户体验。整个系统利用最新的.NET 8框架,具备良好的扩展性和可维护性。

C#.Net筑基-优雅LINQ的查询艺术

https://www.cnblogs.com/anding/p/18942909

Linq(集成查询语言)是.NET Framework 3.5引入的一种数据查询语言,允许使用C#快速查询不同数据源。Linq具有一致的语法,支持链式方法和类似SQL的查询表达式。它提供了类型安全的编译时检查和延迟执行特性。Linq支持任何实现IEnumerable 接口的集合,其查询功能包括过滤、排序、聚合等。文章对Linq的基本概念、语法以及本地和解释型查询进行了详细介绍,展示了其在C#编程中的重要性。Linq的结构清晰且具体,便于开发者理解和应用。

《HelloGitHub》第 111 期

https://www.cnblogs.com/xueweihan/p/18951201

HelloGitHub 是一个分享开源项目的平台,重点介绍有趣和入门级的项目,包括各类编程语言的实战案例和教程。其中,提到的 C# 项目如 AutoUpdater.NET 和 ExplorerTabUtility 旨在提升 Windows 应用的功能性和用户体验。文章汇总多种语言的开源工具,强调开源的魅力与实用性,吸引读者参与开源生态。

LinqPad:C#代码测试学习一品神器

https://www.cnblogs.com/anding/p/18939444

LinqPad是一个轻量级的C#开发工具,广泛用于代码功能测试、脚本编写和数据库查询。它的功能包括运行多种语言的代码、切换.NET版本和输出结果的友好显示。LinqPad支持直接查看IL代码和使用Nuget包,内置了单元测试和性能测试工具。用户可保存代码示例并定义全局扩展方法,同时提供强大的Dump()输出功能,便于可视化数据。尽管存在付费限制,但LinqPad依然是开发者不可或缺的工具。

一次 .NET 性能优化之旅:将 GC 压力降低 99%

https://www.cnblogs.com/Cookies-Tang/p/18956241

这篇文章讲述了在使用ScottPlot库开发频谱分析应用时遇到的GC性能问题。作者通过Visual Studio诊断工具发现GC频繁且耗时过长,导致程序性能下降。分析定位后,发现System.Double类型频繁的装箱调用是导致GC压力的根源。通过修改泛型方法的约束,避免了装箱问题,从而显著降低了GC压力。文章深入解析了如何通过代码优化解决性能瓶颈,内容清晰且实用。

接口设计的原则:构建优雅API的完整指南

https://www.cnblogs.com/damaoa/p/18946547

这篇文章深入探讨了接口设计的原则和最佳实践,强调了接口对系统稳定性和可维护性的影响。文章详细解释了接口设计的基础概念,包括方法签名、参数定义和返回值等。作者提出了单一职责原则和开闭原则,指出每个接口应专注于一个功能,并对未来的扩展需求保持开放。通过明确的示例,文章展示了好的接口设计的特征,如功能内聚和职责明确,有助于提升团队的开发效率和代码质量。

DotTrace系列:4. 诊断窗体程序变卡之原因分析

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

本文讨论了如何使用dotTrace分析程序性能的问题,尤其是程序卡顿和内存使用情况。通过一个窗体程序示例,作者展示了在处理大文件时如何使用dotTrace的时间轴模式来查找性能瓶颈。文章详细解释了UI冻结的定义和原因,强调了GC等待与WPF处理对程序性能的影响。最后,作者分析了GC导致的暂停和线程阻塞,使用dotTrace的新多标签页模式进行深入分析。

使用 xUnit 快速编写 .NET 应用单元测试

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

本文介绍了在.NET环境中使用xUnit框架进行单元测试的最佳实践。单元测试能够快速检测逻辑错误,对保障代码质量至关重要。xUnit是一个开源单位测试框架,支持C#和F#。作者强调命名标准在测试中的重要性,清晰的测试名称有助于理解代码行为。文中提及3A模式(准备、执行、断言)作为编写单元测试的核心方法。由此,开发者能够建立清晰、有效的单元测试项目。最后,文中通过示例代码展示了如何使用xUnit编写简单的单元测试,进一步说明了单元测试的应用。

使用GcExcel .NET将Excel导出为PDF

https://www.cnblogs.com/powertoolsteam/p/18951368

本文介绍了如何使用GcExcel .NET将Excel导出为PDF,包括基础导出功能和高级定制选项。GcExcel提供直观的API,支持导出整个工作簿或特定工作表。开发者可以通过PdfSaveOptions类设置文档属性、安全选项、图像质量等,确保PDF文档满足特定需求。GcExcel在导出时能有效保留Excel中的样式与格式,并给出性能优化和已知限制的应对方案。这些功能使GcExcel成为企业级应用中Excel到PDF转换的强大工具。

基于 Spread,在 Blazor 框架中导入 / 导出 Excel

https://www.cnblogs.com/powertoolsteam/p/18944095

本文介绍了如何在 Blazor 框架中使用 SpreadJS 实现 Excel 文件的导入和导出功能。Blazor 是一个微软推出的框架,支持使用 .NET 构建交互式 Web UI。通过 SpreadJS,开发者可以简化 Excel 文件的处理,用户能够导入、编辑并导出 Excel 数据。文章详细描述了准备工作、创建组件和配置项目的步骤,包括 JavaScript 代码的集成和 Razor 组件的创建。这对于提高开发效率和用户体验非常重要。

DotTrace系列:5. 诊断程序的 慢File 和 慢SQL

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

文章讨论了使用dotTrace诊断Windows子系统模块中的File和SQL的性能问题。首先,作者提到通过监控发现磁盘使用量增高,引导使用dotTrace进行分析。通过收集数据,确定了主线程存在大量文件读写,最终定位到一个低效的逐字节读取方法。接着,文中强调了慢SQL的影响,尤其是在性能优化中。慢SQL不仅会导致线程饥饿,还可能引发内存占用高的问题。作者建议使用dotTrace的timeline模式进行SQL查询的监测与优化。

DotTrace系列:3. 时间度量之墙钟时间和线程时间

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

本文讨论了使用dotTrace进行程序性能评测中的时间度量概念,主要分为墙钟时间和线程时间。墙钟时间可以追踪线程的上班和下班时间,通过Performance Counter和CPU TSC两种方式进行测量。文中提供了C语言示例代码,展示如何使用Win32 API实现这两种测量方式。还解释了QueryPerformanceCounter和__rdtsc的含义及其应用中的注意事项,如CPU频率变化对时间计算的影响。整体上,文章深入讲解了性能测量的技术细节,适合有一定基础的开发者。

使用 .NET Core+GcExcel,生成 Excel 文件

https://www.cnblogs.com/powertoolsteam/p/18945680

本文介绍如何使用 .NET Core 和 GcExcel 生成在线 Excel 文件。首先,介绍了 .NET Core 的特点,如跨平台和高效性,适合各种应用程序开发。其次,详细讲解了 GcExcel 组件的功能,包括创建工作表和编辑单元格等。接着,阐述了环境搭建步骤,包括如何安装 .NET Core 和引入 GcExcel。最后,提供了一个生成 Excel 文件的简单代码示例,帮助开发者实现文件生成的需求,提升工作效率。

微软开源 Azure Functions MCP Extension

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

Azure Functions MCP Extension 是微软的开源扩展库,旨在深度集成 Azure Functions 与模型上下文协议(MCP)。它通过属性装饰器简化函数定义,实现 AI Agent 与外部资源的高效交互。MCP 协议标准化 API 和数据库的通信。开发者通过注解暴露工具功能。实时通信支持基于服务器发送事件(SSE)。此外,该扩展支持无服务器架构,提供开发者工具和 SDK,简化功能调用标准化。应用场景包括各大模型调用接口统一和自动扩缩容。

C#学习日志

https://www.cnblogs.com/eanojiang/p/18943588

本教程是C#入门的基础知识,涵盖了程序结构、命名空间、类与主函数等核心概念。通过示例说明了控制台输入输出的用法,包括Console.WriteLine()、Console.ReadLine()和Console.ReadKey()等。此外,文中对变量类型进行了详细说明,包括有符号与无符号整数、浮点型变量等。还包含了一道时间计量的思维题作为引导,帮助读者理解逻辑思维。整体内容清晰,适合初学者学习与参考。

Dapr Conversation 构建块

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

Dapr Conversation 是 Dapr 1.15 版本中推出的 Alpha 阶段新 API,旨在简化大型语言模型(LLM)的交互。它提供统一的接口支持多模型集成,优化性能与隐私保护。核心功能包括提示缓存、流式响应以及个人信息隐藏,提升用户体验和安全性。Dapr Conversation 定义了结构化数据模型,便于管理对话。SDK 支持多种编程语言,包括 .NET。该 API 可用于智能客服、AI 辅助开发工具等应用场景。尽管存在一定局限性,未来有望与 Dapr Agents 深度集成,进一步增强推理任务的支持能力。

商品中心---13.商品卖家系统的高并发文档

https://www.cnblogs.com/mjunz/p/18947436

本文详细介绍了阿里云Tair的接入与Jedis连接池的使用。首先,介绍了TairJedis及其与Redis的区别。接着,列出了引入依赖的方法、配置文件的内容及Tair相关Bean的配置。随后,提供了如何使用Tair命令的基本实例。此外,文章涵盖了高并发商品卖家系统的缓存预热设计及实现。文章内容翔实,对开发者在实际环境中使用Tair有很好的指导意义。

使用 Spread.net将 Excel 中的文本拆分为多段

https://www.cnblogs.com/powertoolsteam/p/18948104

本文详细介绍了如何在 .NET 应用程序中使用 Spread.NET 处理 Excel 数据,尤其是将长文本拆分为多段。文本拆分是数据清洗和分析中的常见需求。传统手动方式效率低且易出错,而 Spread.NET 提供编程方法如 TextToColumns 方法和内置函数 TEXTSPLIT,帮助开发者高效管理数据。示例代码展示了如何实现这些功能。通过编程方式调用文本转换向导,使得操作更为灵活,提升了开发效率和数据处理准确性。

03 - LayoutPanels例子 - TextBox

https://www.cnblogs.com/dalgleish/p/18946148

这篇文章介绍了如何在C# Maui中创建自定义TextBox,因Maui尚未提供相关控件。首先定义了TextEventArgs类以传递文本信息。接着,强调了所有自定义控件应继承自Border而非Frame,因Frame将在未来被淘汰。文章展示了TextBox类的实现,定义了多个BindableProperty属性,如Text、IsPassword、IsMultiline等,以供使用。文中提供了对IconFont字体的配置说明,鼓励使用者注册以获取自己喜欢的字体。整体而言,这篇文章内容丰富,包含了重要的编程细节。

使用Spread控件构建Checkbook工程的技术指南

https://www.cnblogs.com/powertoolsteam/p/18949333

本文介绍了如何在Visual Studio .NET环境中创建基于葡萄城Spread控件的支票登记簿。首先,开发者需在Visual Studio中创建ASP.NET Web Application工程,并添加Spread控件。接着,配置表格的行列属性包括设置表格尺寸、行列数和列头文本。最后,调整列宽以优化显示效果。该控件提供了丰富的API和灵活的定制能力,帮助处理财务数据和报表展示等场景。

DotTrace系列:6. 程序异常诊断 和 Request慢处理

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

本文分析了CPU利用率异常高的原因,主要是大量抛出异常导致的。通过使用perfview和dottrace等工具,可以有效跟踪并识别异常。作者展示了具体的代码示例,强调高频异常的发生和处理逻辑。同时,讨论了如何通过dotrace识别和优化慢请求。文章内容技术性强,应用实用,细节清晰明了,图示支持直观理解。整体上,文章及时回应当前技术需求,具有较高的原创性和可读性。

DotTrace系列:7. 诊断 托管和非托管 内存暴涨

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

本文探讨托管和非托管内存的分析,提出使用 dotTrace 工具替代传统的 windbg 分析。通过案例展示如何利用 dotTrace 追踪内存分配,识别内存泄露的根源。特别强调了托管堆内存泄漏的情况,对性能监控和内存管理的实际应用具有指导意义。文章详细描述了具体操作步骤和代码示例,帮助读者理解内存分配问题的调试过程。整体内容清晰且实用。

【EF Core】DbContext是如何识别出实体集合的

https://www.cnblogs.com/tcjiaan/p/18956032

本文探讨了DbContext类在C# .NET中的工作原理,特别是如何维护和填充DbSet实体集合。作者介绍了DbContext内部的字典用于存储实体集合,通过GetOrAddSet方法实现缓存和访问。尽管可能需要查看源码,作者希望通过简洁说明来帮助读者理解。这篇文章对C#开发者尤其有用。

[原创]《C#高级GDI+实战:从零开发一个流程图》第04章:来个圆形,连线它!

https://www.cnblogs.com/lesliexin/p/18923109

本文介绍了如何在图形界面中添加可拖动的圆形,并支持圆形与矩形之间的连线。首先,作者构建了基本界面,用户可以选择添加矩形或圆形。然后,处于代码实操,定义了圆形的类并集成到已有的矩形功能中。通过鼠标点击和移动事件,程序判断用户操作的是哪种形状。此外,文中强调了课程内容可能与视频不完全一致,鼓励读者结合思考学习。这种互动式教程促进了读者的理解和实践。

主题

ReSharper 和 Rider 2025.1.4:又一组错误修复现已发布 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2025/06/30/resharper-and-rider-2025-1-4/

LINQPad 9 早期预览版

https://www.linqpad.net/linqpad9.aspx

更好的模型,更智能的默认值:Claude Sonnet 4、GPT-4.1 和 Visual Studio 中的更多控制 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/better-models-smarter-defaults-claude-sonnet-4-gpt-4-1-and-more-control-in-visual-studio/

代理模式现已正式发布,支持 MCP - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/agent-mode-is-now-generally-available-with-mcp-support/

发布 System.CommandLine 2.0.0-beta5 以及我们的稳定版本之路 · 问题 #2576 · dotnet/命令行 api

https://github.com/dotnet/command-line-api/issues/2576

发布

文章、幻灯片等

C# - ComboBox - 右对齐的 3 位逗号分隔

https://zenn.dev/chai0917/articles/3618e9d31ce6ab

C# 对 SerialPort 命名的痴迷以及如何减轻其危害

https://qiita.com/mikecat_mixc/items/114816e2176e6e806f0f

在 Visual Studio 中实际使用 GitHub Copilot 代理模式简介

https://zenn.dev/suusanex/articles/ac9ebbd150ef07

绑定到 .NET 9 中的原生 iOS 框架

https://qotoqot.com/tech/ios-bindings/

为开发人员升级 Ubuntu:.NET 版

https://discourse.ubuntu.com/t/leveling-up-ubuntu-for-developers-net-edition/63162

Rider 2025.2 EAP 7:用于调试游戏的低级异常抑制和其他更新 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2025/06/26/rider-2025-2-eap-7-low-level-exception-suppression/

异步处理训练营 [2025 年版]

https://zenn.dev/sator_imaging/articles/b0ab667808d563

诊断 .NET 中的延迟:后台 GC 和大型对象堆

https://medium.com/@anders_pedersen/diagnosing-latency-in-net-background-gc-and-the-large-object-heap-09449162b399

我尝试将 ASP.NET WebForm 应用于适用于 .NET 的 AWS Transform

https://zenn.dev/_ta/articles/try-aws-transform-for-dotnet

NUnit 与 MSTest 和 xUnit.net 的奇点比较 - Qiita

https://qiita.com/laughter/items/fb38be3e34d5373387ad

将 .NET Aspire 与 Temporal 相结合 - 第 1 部分 | 丽贝卡·鲍威尔

https://rebecca-powell.com/posts/2025-06-09-combining-dotnet-aspire-and-temporal-part-1/

MultiDrive 背后的故事

https://dev.to/empiree/the-story-behind-multidrive-eo8

[C#] 自动化版本控制和发布 [Nerdbank.GitVersioning]

https://zenn.dev/arika/articles/20250623-gitversioning

如何使用 Basler pylon SDK (C# × .NET 8) 采集单台相机图像 - Qiita

https://qiita.com/MilleVision/items/ffd29fa4e9dbf94dff17

C# - C:\ProgramData 和 Everyone 完全控制

https://zenn.dev/chai0917/articles/fd0e56f6c10f28

制作快速的思想杀手 - Qiita

https://qiita.com/TETSURO1999/items/80a849deddbfe47d1e7e

Inside Access:加入我们的 VS Live! Redmond 进行为期一周的开发人员深入学习 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/inside-access-join-us-at-vs-live-redmond-for-a-week-of-deep-developer-learning/

遗留代码生存指南:2025 年的 Visual Basic 和 .NET

https://www.mobilize.net/blog/legacy-code-survival-guide-visual-basic-and-.net-in-2025

[C#] 重新引入 "Properties" ------不仅仅是一个 getter/setter

https://zenn.dev/inuinu/articles/csharp-property-re-entry

从服务器接收文件 (Blazor Server)

https://zenn.dev/tetr4lab/articles/d69583796163b4

使用 JWT 进行基于令牌的身份验证以及 ASP.NET Core 中的实践 - Qiita

https://qiita.com/mia106/items/2e84e75c90f6c9e22a4d

使用 .NET MAUI 进行多模态视觉智能 - .NET 博客

https://devblogs.microsoft.com/dotnet/multimodal-vision-intelligence-with-dotnet-maui/

尝试使用 AIContext 为 Semantic Kernel Agent 提供额外的上下文

https://zenn.dev/microsoft/articles/semantickernel-aicontext

Rider 2025.2 EAP 5:重新构想的监控工具窗口和新的 OpenTelemetry 插件 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2025/06/16/rider-eap-5-new-monitoring-tool-opentelemetry-plugin/

JetBrains Rider 的 OpenTelemetry 插件:IDE 中的可观察性 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2025/06/16/opentelemetry-plugin-for-jetbrains-rider/

C# - Windows 事件日志

https://zenn.dev/chai0917/articles/e62e437d2fd85a

"我希望你在 Rider 中支持 "dotnet run file.cs",所以我希望你 "投票" 因为我构建了一个 issue - Qiita

https://qiita.com/RyotaMurohoshi/items/7194d6adaf52b4eb8594

. 在 .NET 中为 Playwright 创建网页的 PDF - Qiita

https://qiita.com/omt_teruki/items/874feb718a7db5dd7158

在 Windows C# 中创建 BLE HID (HoGP) 外设控制台应用程序

https://zenn.dev/nfukuoka/articles/qiita-20221231-321c2b1e1e7c8c0c0afc

语义内核简介

https://zenn.dev/microsoft/articles/semantickernel-edu-000

语义内核 010 "低级消息处理" 简介

https://zenn.dev/microsoft/articles/semantickernel-edu-010

在 WinUI 3 中发出应用程序通知 (Toast)

https://zenn.dev/spacekey/articles/winui3-toast

暂时想用 WinUI 3 运行某些东西时的准备工作(.NET 9 版本)

https://zenn.dev/spacekey/articles/winui3-project2

用 XElement 在 C# 中解密 XML - Qiita

https://qiita.com/Nagachan_T/items/636305923988528cbcdc

适用于 .NET 的 Azure.AI.OpenAI SDK 端点

https://blog.azure.moe/2025/06/17/net-の-azure-ai-openai-sdk-のエンドポイント/

使用适用于 .NET 的新 GitHub Copilot 功能提高工作效率! - .NET 博客

https://devblogs.microsoft.com/dotnet/improve-productivity-with-github-copilot-dotnet/

使用 Blazor 的 JS 互作即服务 - Qiita

https://qiita.com/onigiripudding/items/3f8267de8a4c7fbaa96f

. NET10 使指定 WPF 的 Grid 矩阵变得更加容易

https://zenn.dev/nin_neko/articles/201e486315d5f3

使用 .NET MAUI 的多模态语音智能 - .NET 博客

https://devblogs.microsoft.com/dotnet/multimodal-voice-intelligence-with-dotnet-maui/

库、存储库、工具等

arika0093/BlazorLocalTime:BlazorLocalTime 提供了在 Blazor 应用程序中将 DateTime 转换为用户本地时区的功能。

https://github.com/arika0093/BlazorLocalTime

nuskey8/luau-dotnet: .NET 和 Unity 的高级 Luau 绑定

https://github.com/nuskey8/luau-dotnet?tab=readme-ov-file

C# .NET 交流群

相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:

  • 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
  • .NET框架底层原理的实现,如垃圾回收器、JIT等等
  • 如何编写高性能的.NET代码,哪些地方存在性能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET问题和宝贵的分析优化经验。目前一群已满,现在开放二群。 可以加我vx,我拉你进群: ls1075 另外也创建了QQ Group: 687779078,欢迎大家加入。

相关推荐
InCerry3 天前
.NET周刊【6月第4期 2025-06-22】
.net周报·.net周刊
InCerry1 个月前
.NET周刊【5月第4期 2025-05-25】
c#·.net·.net周刊
InCerry1 个月前
.NET周刊【5月第3期 2025-05-18】
.net周报·.net周刊
InCerry1 个月前
.NET周刊【5月第2期 2025-05-11】
c#·.net周报·.net周刊
InCerry2 个月前
.NET周刊【5月第1期 2025-05-04】
.net周报·.net周刊
InCerry3 个月前
.NET周刊【4月第1期 2025-04-06】
.net周刊
InCerry3 个月前
.NET周刊【3月第5期 2025-03-30】
.net周报·.net周刊
InCerry3 个月前
.NET周刊【3月第4期 2025-03-23】
.net周报·.net周刊
InCerry4 个月前
.NET周刊【3月第2期 2025-03-09】
.net周报·.net周刊