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

138 阅读18分钟

国内文章

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

www.cnblogs.com/lmy5215006/…

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

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

www.cnblogs.com/Can-daydayu…

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

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

www.cnblogs.com/1312mn/p/18…

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

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

www.cnblogs.com/anding/p/18…

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

《HelloGitHub》第 111 期

www.cnblogs.com/xueweihan/p…

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

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

www.cnblogs.com/anding/p/18…

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

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

www.cnblogs.com/Cookies-Tan…

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

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

www.cnblogs.com/damaoa/p/18…

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

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

www.cnblogs.com/huangxinche…

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

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

www.cnblogs.com/Can-daydayu…

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

使用GcExcel .NET将Excel导出为PDF

www.cnblogs.com/powertoolst…

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

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

www.cnblogs.com/powertoolst…

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

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

www.cnblogs.com/huangxinche…

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

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

www.cnblogs.com/huangxinche…

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

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

www.cnblogs.com/powertoolst…

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

微软开源 Azure Functions MCP Extension

www.cnblogs.com/shanyou/p/1…

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

C#学习日志

www.cnblogs.com/eanojiang/p…

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

Dapr Conversation 构建块

www.cnblogs.com/shanyou/p/1…

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

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

www.cnblogs.com/mjunz/p/189…

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

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

www.cnblogs.com/powertoolst…

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

03 - LayoutPanels例子 - TextBox

www.cnblogs.com/dalgleish/p…

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

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

www.cnblogs.com/powertoolst…

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

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

www.cnblogs.com/huangxinche…

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

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

www.cnblogs.com/huangxinche…

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

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

www.cnblogs.com/tcjiaan/p/1…

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

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

www.cnblogs.com/lesliexin/p…

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

主题

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

blog.jetbrains.com/dotnet/2025…

LINQPad 9 早期预览版

www.linqpad.net/linqpad9.as…

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

devblogs.microsoft.com/visualstudi…

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

devblogs.microsoft.com/visualstudi…

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

github.com/dotnet/comm…

发布

文章、幻灯片等

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

zenn.dev/chai0917/ar…

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

qiita.com/mikecat_mix…

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

zenn.dev/suusanex/ar…

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

qotoqot.com/tech/ios-bi…

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

discourse.ubuntu.com/t/leveling-…

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

blog.jetbrains.com/dotnet/2025…

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

zenn.dev/sator_imagi…

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

medium.com/@anders_ped…

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

zenn.dev/_ta/article…

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

qiita.com/laughter/it…

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

rebecca-powell.com/posts/2025-…

MultiDrive 背后的故事

dev.to/empiree/the…

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

zenn.dev/arika/artic…

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

qiita.com/MilleVision…

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

zenn.dev/chai0917/ar…

制作快速的思想杀手 - Qiita

qiita.com/TETSURO1999…

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

devblogs.microsoft.com/visualstudi…

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

www.mobilize.net/blog/legacy…

[C#] 重新引入 “Properties” ——不仅仅是一个 getter/setter

zenn.dev/inuinu/arti…

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

zenn.dev/tetr4lab/ar…

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

qiita.com/mia106/item…

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

devblogs.microsoft.com/dotnet/mult…

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

zenn.dev/microsoft/a…

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

blog.jetbrains.com/dotnet/2025…

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

blog.jetbrains.com/dotnet/2025…

C# - Windows 事件日志

zenn.dev/chai0917/ar…

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

qiita.com/RyotaMuroho…

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

qiita.com/omt_teruki/…

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

zenn.dev/nfukuoka/ar…

语义内核简介

zenn.dev/microsoft/a…

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

zenn.dev/microsoft/a…

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

zenn.dev/spacekey/ar…

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

zenn.dev/spacekey/ar…

用 XElement 在 C# 中解密 XML - Qiita

qiita.com/Nagachan_T/…

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

blog.azure.moe/2025/06/17/…

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

devblogs.microsoft.com/dotnet/impr…

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

qiita.com/onigiripudd…

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

zenn.dev/nin_neko/ar…

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

devblogs.microsoft.com/dotnet/mult…

库、存储库、工具等

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

github.com/arika0093/B…

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

github.com/nuskey8/lua…

C# .NET 交流群

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

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

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

本文由博客一文多发平台 OpenWrite 发布!