国内文章
我最喜欢的 C# 14 新特性
https://www.cnblogs.com/sdcb/p/19024248/my-favorit-csharp-14-feature
C# 14 引入了多项新特性,旨在提高编程效率。其中,用户定义的复合赋值运算符特别引人关注。这项新特性允许开发者为 +=、-= 等运算符重载,为曾经只能静态重载的操作提供了更多灵活性。作者以矩阵类为例,直观地展示了这种改进的重要性。此版本的更新,尤其是针对有 C++ 背景的开发者,解决了他们在转向 C# 时遇到的痛点。该文详尽地探讨了新特性,适合该领域的技术读者。简洁易懂,内容丰富。
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
https://www.cnblogs.com/sdcb/p/19019424/csharp-circular-buffer
本文讨论了在天体运行模拟器项目中,如何实现一个固定大小的循环缓冲区(CircularBuffer<T>),以记录天体的历史位置。作者指出使用 List<T> 的缺点在于其无限增长会导致内存消耗和程序崩溃。循环缓冲区能够在新数据进入时自动丢弃最旧的数据,满足了需求。文中详细展示了 CircularBuffer 的实现,包括其属性和初始化方法,突出其支持泛型和可遍历性。该实现解决了内存管理问题,并提高了代码的效率。
如何正确实现一个 BackgroundService
https://www.cnblogs.com/kklldog/p/19020718
本文讨论了如何在 .NET 中实现后台任务,重点在于 IHostedService 接口的使用。通过实现该接口,可以在应用程序运行时执行定时任务、监听事件等。StartAsync 和 StopAsync 方法负责启动和停止服务。文章指出,后台服务的执行顺序会影响程序的启动日志,可以导致后续任务无法执行。缺乏这种细节的分析,初学者可能会误解如何有效地注册和管理后台任务。
那些被推迟的 C# 14 特性及其背后的故事
https://www.cnblogs.com/sdcb/p/19026035/unimplemented-csharp-14-features
C# 14 和 .NET 10 的发布带来了多项语言改进,但一些期待的重大特性仍未实现。C# 团队倾向于稳步发展,保障每一步的质量。特性设计过程透明,核心团队通过 GitHub 仓库中的议题来处理新特性。可辨识联合(Discriminated Unions)作为社区最期望的特性之一,可以在编译时消除非法状态,提高系统健壮性。理想的DU实现能避免逻辑错误,确保实例符合类型系统的要求,增强编程安全性。这些故事揭示了C#未来的设计方向。
纯 C#实现+AOT 打造的多功能图片处理工具 ImageGlider
https://www.cnblogs.com/deali/p/19024294/csharp-aot-imageglider
本文介绍了一个使用 C# 和 .NET 9 开发的跨平台图像处理工具 ImageGlider。该工具支持多种图像格式转换、尺寸调整、压缩优化、裁剪、水印添加和元数据清理等功能。它采用模块化设计,无需外部依赖,能够快速集成到 .NET 项目中。ImageGlider 具备命令行工具、Web API 和核心类库等多种使用方式,并支持 AOT 编译,启动速度快。文章还提供了项目的开源地址和安装命令,方便用户使用和贡献。整体而言,本文内容详实,实用性强。
一款基于 .NET + Vue 编写的仿钉钉的开源低代码工作流引擎,支持多种数据库,开箱即用!
https://www.cnblogs.com/Can-daydayup/p/19024287
AntFlow.NET是一款基于.NET和Vue的开源低代码工作流引擎,支持多种数据库,旨在简化工作流开发。它提供极简配置和低学习成本,适合新手程序员使用。该项目的功能包括流程设计、条件分支和多种审批场景,具有高度可扩展性。技术栈涵盖ASP.NET Core、FreeSql和Natasha,确保其现代化和高性能。项目已被纳入C#/.NET优秀项目推荐,提供在线演示和源代码链接。总的来说,AntFlow.NET为高效办公提供了强有力的支持。
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
https://www.cnblogs.com/flykai/p/19027992
该技术文章讨论了如何通过C#和Avalonia UI框架实现跨平台控制系统,支持对外购设备的控制和监测。文章详述了系统设计目标,包括控制执行器、实时监测和日志记录。上位机通过modbus与执行器通信,并可在Linux上运行。界面设计简洁,功能区分明确,支持控制命令下发和状态监控。Avalonia UI的优点包括跨平台能力、兼容性、界面自定义和良好性能。同时,活跃的社区为持续发展提供支持。
对 .NET线程 异常退出引发程序崩溃的反思
https://www.cnblogs.com/huangxincheng/p/19022842
这篇文章讲述了一个.NET程序崩溃的故事,通过分析崩溃时的线程状态,发现是由于一个托管线程异常退出引起的。文章详细展示了线程的状态和调用栈信息,指出CLR在GC触发时无法识别该异常线程,从而导致访问违例。作者提供了具体的调试信息,帮助读者理解异常背后的技术细节。整体上,文章在技术深度、实际应用和清晰度方面表现良好。
最强ORM让你开发效率提升百倍
https://www.cnblogs.com/xuejiaming/p/19027570
该文章介绍了easy-query这个ORM框架,强调其在查询领域的强大功能和开发效率。文章列举了动态join、结构化DTO、隐式子查询等特性,指出这些功能帮助开发者减少性能问题。通过实体关系的建模示例,展示了用户、分类、帖子、评论和点赞之间的关系。文章还提供了框架和文档链接,便于读者学习实践,最后提及了与efcore的对比,突出easy-query的独特性。
Sdcb Chats 1.6.6 发布,彻底移除 Azure.AI.OpenAI 专用包
https://www.cnblogs.com/sdcb/p/19027666/sdcb-chats-1-6-6-release
Sdcb Chats 项目更新至 1.6.6 版本,主要去除了对 Azure.AI.OpenAI 包的依赖,统一了 API 要求,简化了代码逻辑,支持使用标准 OpenAI 渠道访问相关模型。此外,还更新了一系列 NuGet 依赖包,并修复了迭代开发中引入的 Bug。该项目兼容多种主流大语言模型,支持灵活的数据库选项和多样的部署方式,适合开发者和用户使用。用户可选择通过 Docker 或直接运行二进制文件来部署项目。
.NET 10 中的新增功能系列文章4------.NET SDK中的新增功能
https://www.cnblogs.com/powertoolsteam/p/19022593
随着.NET 10的发布,SDK引入了众多新特性,如跨平台工具支持、单次工具执行、CLI自省等。这些改进优化了开发流程,提升了工具的易用性和应用性能。开发者能够在单个包中发布多平台工具,简化了分发流程。同时,dotnet tool exec命令允许开发者即时执行工具,增强了CI/CD应用场景。基于文件的应用功能增强,支持直接发布为本机可执行文件,并改进了项目引用及路径访问。诸多特性共同提升了.NET环境的开发效率和灵活性。
我是不是很有钱?
https://www.cnblogs.com/sdcb/p/19030357/am-i-rich
文章探讨了在家庭网络设计中,不仅是设备选择,更重要的是整体设计。作者通过朋友的网络问题,强调了合理布线和设备位置的重要性,指出单靠高价路由器无法解决结构性问题。对比了无线和有线回程的效果,引入了 Mesh 的复杂性和策略需要。作者分享了自己对技术的热爱,强调了在代码中的创造性带来的成就感,认为这是一种无法用金钱替代的富足。最后,提供了几点网络优化建议,强调了布线和设备选材的优先级。文章语言准确,层次分明。
分析C#项目的单元测试覆盖率,提高代码质量
https://www.cnblogs.com/deali/p/19026074/csharp-unit-test-coverage-analysis
本文介绍了C#语言在单元测试覆盖率方面的重要性,强调了覆盖率提高测试有效性。作者分享了使用多种IDE(如VSCode、Rider)和dotnet-reportgenerator-globaltool工具分析测试覆盖率的经验。通过这些工具,开发者能够便捷地生成HTML报告,查看测试覆盖率,识别未测试的方法和逻辑分支。作者还简单列举了使用C#开发的多种工具,如视频剪辑、AI文章发布、图标生成等,展现了C#在自动化发布流程中的应用潜力。总而言之,旨在帮助开发者提升代码质量与测试全面性。
.NET 10 新增功能系列文章5------C# 14 中的新增功能
https://www.cnblogs.com/powertoolsteam/p/19026609
C# 14引入了多项新特性。其中,扩展成员增强了扩展方法的能力,支持扩展属性和静态成员,提升了API设计的灵活性。field关键字简化了属性实现,省去显式字段的声明。隐式Span转换提高了性能,允许数组和字符串等类型的自然转化,适合高效的文本和数值处理。nameof操作符现在可用于未绑定泛型类型,简化了反射和日志记录的代码。这些特点显著增强了C#的可用性和性能。
记录win11下,WPF设置 System.AppUserModel.PreventPinning 属性用于阻止用户将应用程序固定到任务栏
https://www.cnblogs.com/wuty/p/19027532
这篇文章讨论如何在WPF应用中禁用任务栏右键菜单的"固定到任务栏"选项。文章首先介绍了需求背景,提到部分窗口仅显示"关闭窗口"。接着,引用了微软的官方文档,解释了如何定义System.AppUserModel.PreventPinning属性。然后,文章详细说明了如何定义IPropertyStore接口以及调用SHGetPropertyStoreForWindow函数来实现禁用功能,并提供了相关代码实现。
LongRunningTask-正确用法
https://www.cnblogs.com/kklldog/p/19022317
文章讨论了在 .NET 中使用 Task.Factory.StartNew 与 LongRunning 选项的误用。开发者错误地认为使用 LongRunning 选项可以确保后台任务始终在同一线程上执行。由于 async await 的存在,当遇到第一个 await 时,任务会从线程池调度新的线程,这违背了使用 LongRunning 的初衷。文章通过示例说明了这个错误用法,并暗示了正确的实现方法。
基于 .NET 开源、功能齐全的分布式作业调度系统
https://www.cnblogs.com/Can-daydayup/p/19029797
本文介绍了基于.NET的开源分布式作业调度系统Sundial。该系统适用于各种规模的企业级应用。文章指导用户创建.NET 9控制台应用,安装Sundial NuGet包,并自定义任务,展示如何实现IJob接口。用户可以根据需要注册作业并配置触发器,可以选择按秒或使用Cron表达式调度任务。文中提供了项目的源码地址,鼓励用户关注优秀的C#和.NET项目,提升开发效率。
Maui 实践:自制轻量级通知组件 NoticeView
https://www.cnblogs.com/zhally/p/19021883
本文介绍了一个自定义的通知组件 NoticeView,旨在改善 MAUI 应用中的对话交互体验。虽然 Microsoft.Maui.Controls 提供了一些基本的对话框功能,但在使用 Snackbar 和 Toast 时常常反馈不及时。NoticeView 支持多级优先级消息管理,确保高优先级消息优先显示,并自动清理低优先级消息,避免内存溢出。该组件设计包含核心元素和配置选项,具有安全的多线程消息发送功能,能保证消息的及时性和有效性。
【译】Visual Studio Copilot 中更智能的人工智能编辑
https://www.cnblogs.com/MeteorSeed/p/19021862
本文探讨了在 Visual Studio Copilot 中实现智能AI编辑的挑战。作者提到,最初处理建议的插入时面临多个问题,如编辑位置和冲突。早期使用暴力破解与启发式方法效果有限,随后借助推测解码技术显著提高了编辑的准确性和速度。推测解码将快速模型与复杂模型结合,从而提升了生成速度,改善了编辑的整合过程。虽然这种方法引入了网络延迟,通过流式动画提供了实时反馈,使用户更关注准确性而非速度。最后,文章展望了未来将进一步缩短延迟的计划。
一步一步学习使用LiveBindings(9) LiveBindings图像绑定与自定义绑定方法(2)
https://www.cnblogs.com/lincats/p/19029850
本文讲述了LiveBindings的使用,深入探讨了TGrid的列格式化及自定义绑定方法。首先介绍如何将TGrid与ProtoTypeBindSource连接,强调了列绑定的重要性。接着详细说明了如何操作Grid的列,包括添加、设置属性,如ColumnStyle、CustomFormat和ReadOnly等。提供了具体的日期与货币格式化示例。此外,文中展示了如何实现薪资等级的图标和进度条,确保内容的灵活性和专业性。最后,讨论了如何自定义解析公式以满足特定需求。
伏魔挑战赛-ASP/ASP.NET赛道10+绕过样本思路分享
https://www.cnblogs.com/cwkiller/p/19030688
本文分享了作者在阿里云挑战赛中对ASP.NET绕过样本的分析与思路。首先介绍了前导零和双重编码的技术,展示了如何通过改变codepage的数值及使用双重编码成功绕过检测。接着,讨论了ASP.NET中的特殊语法,强调了使用注释和特定字符达到绕过目的的有效案例。文中详细阐述了编码技巧以及相关实验结果,帮助读者理解绕过机制及其应用。
【EF Core】聊聊"复合"属性
https://www.cnblogs.com/tcjiaan/p/19030612
文章讨论了复合属性的概念,并与导航属性进行了对比。复合属性由多个基础类型构成,强调它们不映射到数据库表,而是作为主表的字段。作者解释了使用复合属性的场景,指出其适用于不需要单独存储的复杂信息。通过示例展示了如何定义复合属性,并阐明了复合属性与导航属性的主要区别,这些区别建立在实体引用和数据映射的基础上。总体上,文章深入浅出,适合读者理解 C# 中复合属性的应用。
本期国际周刊未更新
C# .NET 交流群
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
- 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
- .NET框架底层原理的实现,如垃圾回收器、JIT等等
- 如何编写高性能的.NET代码,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET问题和宝贵的分析优化经验。目前一群已满,现在开放二群。 可以加我vx,我拉你进群: ls1075 另外也创建了QQ Group: 687779078,欢迎大家加入。