国内文章
为什么说方法的参数最好不要超过4个?
本文探讨了调用协定的概念,包括参数传递方式、栈清理和寄存器使用。介绍了不同架构下的调用协定,例如x86的多种调用协定如__cdecl、__stdcall和__fastcall,及其各自的特点和适用场景。同时也分析了x64架构的统一调用协定,区分了Windows与Linux的实现。此外,文章指出了C#在x86下使用的独特调用协定。通过示例代码,作者清晰展示了不同调用协定的实现方式,增强读者理解。整体内容技术深度适中,清晰易懂。
一个基于 .NET 8 开源免费、高性能、低占用的博客系统
Masuit.MyBlogs是一个基于.NET 8的开源博客系统。它高性能、高安全性,低内存占用,仅3MB代码量。系统可处理每天80-600万次请求,支持60-600名活跃用户。主要功能包括服务器性能监控、文章管理、评论审核、消息通知和广告管理等。项目使用.NET 8、ASP.NET Core MVC等技术。作者鼓励用户访问GitHub开源地址以支持项目并获取更多信息。
.NET 8 gRPC 实现高效100G大文件断点续传工具
本文介绍了一个基于.NET gRPC技术的大文件断点续传工具,旨在解决传统文件传输方式在大文件上传中的问题。该工具支持最大100GB文件的高效传输,具备在中断后续传的功能。项目采用WinForm构建前端,ASP.NET Core gRPC实现后端,确保了传输的稳定性和可靠性。工具实现了文件分块上传、实时进度显示和数据校验等功能,使用SQLite持久化传输状态,增强用户体验。整个系统利用最新的.NET 8框架,具备良好的扩展性和可维护性。
C#.Net筑基-优雅LINQ的查询艺术
Linq(集成查询语言)是.NET Framework 3.5引入的一种数据查询语言,允许使用C#快速查询不同数据源。Linq具有一致的语法,支持链式方法和类似SQL的查询表达式。它提供了类型安全的编译时检查和延迟执行特性。Linq支持任何实现IEnumerable接口的集合,其查询功能包括过滤、排序、聚合等。文章对Linq的基本概念、语法以及本地和解释型查询进行了详细介绍,展示了其在C#编程中的重要性。Linq的结构清晰且具体,便于开发者理解和应用。
《HelloGitHub》第 111 期
HelloGitHub 是一个分享开源项目的平台,重点介绍有趣和入门级的项目,包括各类编程语言的实战案例和教程。其中,提到的 C# 项目如 AutoUpdater.NET 和 ExplorerTabUtility 旨在提升 Windows 应用的功能性和用户体验。文章汇总多种语言的开源工具,强调开源的魅力与实用性,吸引读者参与开源生态。
LinqPad:C#代码测试学习一品神器
LinqPad是一个轻量级的C#开发工具,广泛用于代码功能测试、脚本编写和数据库查询。它的功能包括运行多种语言的代码、切换.NET版本和输出结果的友好显示。LinqPad支持直接查看IL代码和使用Nuget包,内置了单元测试和性能测试工具。用户可保存代码示例并定义全局扩展方法,同时提供强大的Dump()输出功能,便于可视化数据。尽管存在付费限制,但LinqPad依然是开发者不可或缺的工具。
一次 .NET 性能优化之旅:将 GC 压力降低 99%
这篇文章讲述了在使用ScottPlot库开发频谱分析应用时遇到的GC性能问题。作者通过Visual Studio诊断工具发现GC频繁且耗时过长,导致程序性能下降。分析定位后,发现System.Double类型频繁的装箱调用是导致GC压力的根源。通过修改泛型方法的约束,避免了装箱问题,从而显著降低了GC压力。文章深入解析了如何通过代码优化解决性能瓶颈,内容清晰且实用。
接口设计的原则:构建优雅API的完整指南
这篇文章深入探讨了接口设计的原则和最佳实践,强调了接口对系统稳定性和可维护性的影响。文章详细解释了接口设计的基础概念,包括方法签名、参数定义和返回值等。作者提出了单一职责原则和开闭原则,指出每个接口应专注于一个功能,并对未来的扩展需求保持开放。通过明确的示例,文章展示了好的接口设计的特征,如功能内聚和职责明确,有助于提升团队的开发效率和代码质量。
DotTrace系列:4. 诊断窗体程序变卡之原因分析
本文讨论了如何使用dotTrace分析程序性能的问题,尤其是程序卡顿和内存使用情况。通过一个窗体程序示例,作者展示了在处理大文件时如何使用dotTrace的时间轴模式来查找性能瓶颈。文章详细解释了UI冻结的定义和原因,强调了GC等待与WPF处理对程序性能的影响。最后,作者分析了GC导致的暂停和线程阻塞,使用dotTrace的新多标签页模式进行深入分析。
使用 xUnit 快速编写 .NET 应用单元测试
本文介绍了在.NET环境中使用xUnit框架进行单元测试的最佳实践。单元测试能够快速检测逻辑错误,对保障代码质量至关重要。xUnit是一个开源单位测试框架,支持C#和F#。作者强调命名标准在测试中的重要性,清晰的测试名称有助于理解代码行为。文中提及3A模式(准备、执行、断言)作为编写单元测试的核心方法。由此,开发者能够建立清晰、有效的单元测试项目。最后,文中通过示例代码展示了如何使用xUnit编写简单的单元测试,进一步说明了单元测试的应用。
使用GcExcel .NET将Excel导出为PDF
本文介绍了如何使用GcExcel .NET将Excel导出为PDF,包括基础导出功能和高级定制选项。GcExcel提供直观的API,支持导出整个工作簿或特定工作表。开发者可以通过PdfSaveOptions类设置文档属性、安全选项、图像质量等,确保PDF文档满足特定需求。GcExcel在导出时能有效保留Excel中的样式与格式,并给出性能优化和已知限制的应对方案。这些功能使GcExcel成为企业级应用中Excel到PDF转换的强大工具。
基于 Spread,在 Blazor 框架中导入 / 导出 Excel
本文介绍了如何在 Blazor 框架中使用 SpreadJS 实现 Excel 文件的导入和导出功能。Blazor 是一个微软推出的框架,支持使用 .NET 构建交互式 Web UI。通过 SpreadJS,开发者可以简化 Excel 文件的处理,用户能够导入、编辑并导出 Excel 数据。文章详细描述了准备工作、创建组件和配置项目的步骤,包括 JavaScript 代码的集成和 Razor 组件的创建。这对于提高开发效率和用户体验非常重要。
DotTrace系列:5. 诊断程序的 慢File 和 慢SQL
文章讨论了使用dotTrace诊断Windows子系统模块中的File和SQL的性能问题。首先,作者提到通过监控发现磁盘使用量增高,引导使用dotTrace进行分析。通过收集数据,确定了主线程存在大量文件读写,最终定位到一个低效的逐字节读取方法。接着,文中强调了慢SQL的影响,尤其是在性能优化中。慢SQL不仅会导致线程饥饿,还可能引发内存占用高的问题。作者建议使用dotTrace的timeline模式进行SQL查询的监测与优化。
DotTrace系列:3. 时间度量之墙钟时间和线程时间
本文讨论了使用dotTrace进行程序性能评测中的时间度量概念,主要分为墙钟时间和线程时间。墙钟时间可以追踪线程的上班和下班时间,通过Performance Counter和CPU TSC两种方式进行测量。文中提供了C语言示例代码,展示如何使用Win32 API实现这两种测量方式。还解释了QueryPerformanceCounter和__rdtsc的含义及其应用中的注意事项,如CPU频率变化对时间计算的影响。整体上,文章深入讲解了性能测量的技术细节,适合有一定基础的开发者。
使用 .NET Core+GcExcel,生成 Excel 文件
本文介绍如何使用 .NET Core 和 GcExcel 生成在线 Excel 文件。首先,介绍了 .NET Core 的特点,如跨平台和高效性,适合各种应用程序开发。其次,详细讲解了 GcExcel 组件的功能,包括创建工作表和编辑单元格等。接着,阐述了环境搭建步骤,包括如何安装 .NET Core 和引入 GcExcel。最后,提供了一个生成 Excel 文件的简单代码示例,帮助开发者实现文件生成的需求,提升工作效率。
微软开源 Azure Functions MCP Extension
Azure Functions MCP Extension 是微软的开源扩展库,旨在深度集成 Azure Functions 与模型上下文协议(MCP)。它通过属性装饰器简化函数定义,实现 AI Agent 与外部资源的高效交互。MCP 协议标准化 API 和数据库的通信。开发者通过注解暴露工具功能。实时通信支持基于服务器发送事件(SSE)。此外,该扩展支持无服务器架构,提供开发者工具和 SDK,简化功能调用标准化。应用场景包括各大模型调用接口统一和自动扩缩容。
C#学习日志
本教程是C#入门的基础知识,涵盖了程序结构、命名空间、类与主函数等核心概念。通过示例说明了控制台输入输出的用法,包括Console.WriteLine()、Console.ReadLine()和Console.ReadKey()等。此外,文中对变量类型进行了详细说明,包括有符号与无符号整数、浮点型变量等。还包含了一道时间计量的思维题作为引导,帮助读者理解逻辑思维。整体内容清晰,适合初学者学习与参考。
Dapr Conversation 构建块
Dapr Conversation 是 Dapr 1.15 版本中推出的 Alpha 阶段新 API,旨在简化大型语言模型(LLM)的交互。它提供统一的接口支持多模型集成,优化性能与隐私保护。核心功能包括提示缓存、流式响应以及个人信息隐藏,提升用户体验和安全性。Dapr Conversation 定义了结构化数据模型,便于管理对话。SDK 支持多种编程语言,包括 .NET。该 API 可用于智能客服、AI 辅助开发工具等应用场景。尽管存在一定局限性,未来有望与 Dapr Agents 深度集成,进一步增强推理任务的支持能力。
商品中心—13.商品卖家系统的高并发文档
本文详细介绍了阿里云Tair的接入与Jedis连接池的使用。首先,介绍了TairJedis及其与Redis的区别。接着,列出了引入依赖的方法、配置文件的内容及Tair相关Bean的配置。随后,提供了如何使用Tair命令的基本实例。此外,文章涵盖了高并发商品卖家系统的缓存预热设计及实现。文章内容翔实,对开发者在实际环境中使用Tair有很好的指导意义。
使用 Spread.net将 Excel 中的文本拆分为多段
本文详细介绍了如何在 .NET 应用程序中使用 Spread.NET 处理 Excel 数据,尤其是将长文本拆分为多段。文本拆分是数据清洗和分析中的常见需求。传统手动方式效率低且易出错,而 Spread.NET 提供编程方法如 TextToColumns 方法和内置函数 TEXTSPLIT,帮助开发者高效管理数据。示例代码展示了如何实现这些功能。通过编程方式调用文本转换向导,使得操作更为灵活,提升了开发效率和数据处理准确性。
03 - LayoutPanels例子 - TextBox
这篇文章介绍了如何在C# Maui中创建自定义TextBox,因Maui尚未提供相关控件。首先定义了TextEventArgs类以传递文本信息。接着,强调了所有自定义控件应继承自Border而非Frame,因Frame将在未来被淘汰。文章展示了TextBox类的实现,定义了多个BindableProperty属性,如Text、IsPassword、IsMultiline等,以供使用。文中提供了对IconFont字体的配置说明,鼓励使用者注册以获取自己喜欢的字体。整体而言,这篇文章内容丰富,包含了重要的编程细节。
使用Spread控件构建Checkbook工程的技术指南
本文介绍了如何在Visual Studio .NET环境中创建基于葡萄城Spread控件的支票登记簿。首先,开发者需在Visual Studio中创建ASP.NET Web Application工程,并添加Spread控件。接着,配置表格的行列属性包括设置表格尺寸、行列数和列头文本。最后,调整列宽以优化显示效果。该控件提供了丰富的API和灵活的定制能力,帮助处理财务数据和报表展示等场景。
DotTrace系列:6. 程序异常诊断 和 Request慢处理
本文分析了CPU利用率异常高的原因,主要是大量抛出异常导致的。通过使用perfview和dottrace等工具,可以有效跟踪并识别异常。作者展示了具体的代码示例,强调高频异常的发生和处理逻辑。同时,讨论了如何通过dotrace识别和优化慢请求。文章内容技术性强,应用实用,细节清晰明了,图示支持直观理解。整体上,文章及时回应当前技术需求,具有较高的原创性和可读性。
DotTrace系列:7. 诊断 托管和非托管 内存暴涨
本文探讨托管和非托管内存的分析,提出使用 dotTrace 工具替代传统的 windbg 分析。通过案例展示如何利用 dotTrace 追踪内存分配,识别内存泄露的根源。特别强调了托管堆内存泄漏的情况,对性能监控和内存管理的实际应用具有指导意义。文章详细描述了具体操作步骤和代码示例,帮助读者理解内存分配问题的调试过程。整体内容清晰且实用。
【EF Core】DbContext是如何识别出实体集合的
本文探讨了DbContext类在C# .NET中的工作原理,特别是如何维护和填充DbSet实体集合。作者介绍了DbContext内部的字典用于存储实体集合,通过GetOrAddSet方法实现缓存和访问。尽管可能需要查看源码,作者希望通过简洁说明来帮助读者理解。这篇文章对C#开发者尤其有用。
[原创]《C#高级GDI+实战:从零开发一个流程图》第04章:来个圆形,连线它!
本文介绍了如何在图形界面中添加可拖动的圆形,并支持圆形与矩形之间的连线。首先,作者构建了基本界面,用户可以选择添加矩形或圆形。然后,处于代码实操,定义了圆形的类并集成到已有的矩形功能中。通过鼠标点击和移动事件,程序判断用户操作的是哪种形状。此外,文中强调了课程内容可能与视频不完全一致,鼓励读者结合思考学习。这种互动式教程促进了读者的理解和实践。
主题
ReSharper 和 Rider 2025.1.4:又一组错误修复现已发布 | .NET 工具博客
blog.jetbrains.com/dotnet/2025…
LINQPad 9 早期预览版
更好的模型,更智能的默认值: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
发布
- App-vNext/Polly
- AvaloniaUI/Avalonia
- aws/aws-sdk-net
- Azure/azure-cosmos-dotnet-v3
- Azure/azure-sdk-for-net
- Azure.Communication.Chat_1.4.0,Azure.Communication.PhoneNumbers_1.4. 0, Azure.Extensions.AspNetCore.DataProtection.Blobs_1.5. 1、Azure.Extensions.AspNetCore.DataProtection.Keys_ 1.6.1,Azure.Identity_1.14. 1, Azure.Messaging.EventGrid_5.0.0、Azure.Messaging.EventGrid.SystemEvents_1.0. 0, Azure.Messaging.EventHubs_5.12. 2,Azure.Messaging.ServiceBus_7.20. 1, Azure.Monitor.Query_1.7.0、Azure.Provisioning.AppService_1.1. 1,Azure.Provisioning.AppService_1.2. 0, Azure.Provisioning.OperationalInsights_1.1. 0, Azure.Provisioning.PostgreSql_1.1. 1,Azure.Provisioning.Storage_1.1. 0, Azure.Provisioning.Storage_1.1. 1,Azure.ResourceManager.CognitiveServices_1.5. 0 Azure.ResourceManager.ContainerService_1.2.4,Azure.ResourceManager.DataFactory_1.9. 0, Azure.ResourceManager.NetworkCloud_1.2. 0, Azure.ResourceManager.OracleDatabase_1.1. 0, Azure.ResourceManager.PostgreSql_1.3. 0, Azure.ResourceManager.Resources_1.11. 0, Azure.Search.Documents_11.6. 1,Azure.Security.KeyVault.Administration_4.6. 0, Azure.Security.KeyVault.Certificates_4.8. 0, Azure.Security.KeyVault.Keys_4.8. 0, Azure.Security.KeyVault.Secrets_4.8. 0, Microsoft.Azure.WebJobs.Extensions.EventGrid_3.5. 0, Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.17. 0, Microsoft.Azure.WebJobs.Extensions.SignalRService_ 1.14.1, Microsoft.Azure.WebJobs.Extensions.Tables_ 1.4.0, Microsoft.Extensions.Azure_1.12. 0
- DataDog/dd-trace-dotnet
- dotnet/aspire
- dotnet/aspnetcore
- dotnet/efcore
- googleapis/google-cloud-dotnet
- Google.Cloud.AIPlatform.V1-3.35.0、 Google.Cloud.AIPlatform.V1-3.36.0,Google.Cloud.AlloyDb.V1-1.11. 0,Google.Cloud.Bigtable.Admin.V2-3.27. 0,Google.Cloud.Channel.V1-2.15. 0,Google.Cloud.Dlp.V2-4.19. 0,Google.Cloud.NetworkServices.V1-1.2. 0,Google.Cloud.PubSub.V1-3.25. 0,Google.Cloud.PubSub.V1-3.26. 0,Google.Cloud.Retail.V2-2.14. 0、Google.Cloud.Spanner-5.1. 0
- MessagePack-CSharp/MessagePack-CSharp
- newrelic/newrelic-dotnet-agent
- uno平台/uno
文章、幻灯片等
C# - ComboBox - 右对齐的 3 位逗号分隔
C# 对 SerialPort 命名的痴迷以及如何减轻其危害
在 Visual Studio 中实际使用 GitHub Copilot 代理模式简介
绑定到 .NET 9 中的原生 iOS 框架
为开发人员升级 Ubuntu:.NET 版
discourse.ubuntu.com/t/leveling-…
Rider 2025.2 EAP 7:用于调试游戏的低级异常抑制和其他更新 | .NET 工具博客
blog.jetbrains.com/dotnet/2025…
异步处理训练营 [2025 年版]
诊断 .NET 中的延迟:后台 GC 和大型对象堆
我尝试将 ASP.NET WebForm 应用于适用于 .NET 的 AWS Transform
NUnit 与 MSTest 和 xUnit.net 的奇点比较 - Qiita
将 .NET Aspire 与 Temporal 相结合 - 第 1 部分 | 丽贝卡·鲍威尔
rebecca-powell.com/posts/2025-…
MultiDrive 背后的故事
[C#] 自动化版本控制和发布 [Nerdbank.GitVersioning]
如何使用 Basler pylon SDK (C# × .NET 8) 采集单台相机图像 - Qiita
C# - C:\ProgramData 和 Everyone 完全控制
制作快速的思想杀手 - Qiita
Inside Access:加入我们的 VS Live! Redmond 进行为期一周的开发人员深入学习 - Visual Studio Blog
devblogs.microsoft.com/visualstudi…
遗留代码生存指南:2025 年的 Visual Basic 和 .NET
[C#] 重新引入 “Properties” ——不仅仅是一个 getter/setter
从服务器接收文件 (Blazor Server)
使用 JWT 进行基于令牌的身份验证以及 ASP.NET Core 中的实践 - Qiita
使用 .NET MAUI 进行多模态视觉智能 - .NET 博客
devblogs.microsoft.com/dotnet/mult…
尝试使用 AIContext 为 Semantic Kernel Agent 提供额外的上下文
Rider 2025.2 EAP 5:重新构想的监控工具窗口和新的 OpenTelemetry 插件 | .NET 工具博客
blog.jetbrains.com/dotnet/2025…
JetBrains Rider 的 OpenTelemetry 插件:IDE 中的可观察性 | .NET 工具博客
blog.jetbrains.com/dotnet/2025…
C# - Windows 事件日志
“我希望你在 Rider 中支持 ”dotnet run file.cs“,所以我希望你 ”投票“ 因为我构建了一个 issue - Qiita
. 在 .NET 中为 Playwright 创建网页的 PDF - Qiita
在 Windows C# 中创建 BLE HID (HoGP) 外设控制台应用程序
语义内核简介
语义内核 010 “低级消息处理” 简介
在 WinUI 3 中发出应用程序通知 (Toast)
暂时想用 WinUI 3 运行某些东西时的准备工作(.NET 9 版本)
用 XElement 在 C# 中解密 XML - Qiita
适用于 .NET 的 Azure.AI.OpenAI SDK 端点
使用适用于 .NET 的新 GitHub Copilot 功能提高工作效率! - .NET 博客
devblogs.microsoft.com/dotnet/impr…
使用 Blazor 的 JS 互作即服务 - Qiita
. NET10 使指定 WPF 的 Grid 矩阵变得更加容易
使用 .NET MAUI 的多模态语音智能 - .NET 博客
devblogs.microsoft.com/dotnet/mult…
库、存储库、工具等
arika0093/BlazorLocalTime:BlazorLocalTime 提供了在 Blazor 应用程序中将 DateTime 转换为用户本地时区的功能。
nuskey8/luau-dotnet: .NET 和 Unity 的高级 Luau 绑定
C# .NET 交流群
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
- 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
- .NET框架底层原理的实现,如垃圾回收器、JIT等等
- 如何编写高性能的.NET代码,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET问题和宝贵的分析优化经验。目前一群已满,现在开放二群。可以加我vx,我拉你进群: ls1075 另外也创建了QQ Group: 687779078,欢迎大家加入。
本文由博客一文多发平台 OpenWrite 发布!