C# .NET 周刊 |2026 年 4 月 4 期 2026-04-26 dotnet_week_26_4_4
国内文章
写 EF Core 查询,90% 的人第一步就错了:刚子教你避开所有坑
https://www.cnblogs.com/shenchuanchao/p/19889187/ef-core-query-first-step-mistake-gangzi-guide
文章由码农刚子讲解 EF Core 复杂查询实战。文章提出三大核心技巧:Include/ThenInclude 做多表关联,表达式树做动态筛选,AsNoTracking/Select/AsSplitQuery 做性能优化。作者提供多级关联与关联过滤示例,并展示动态拼接查询条件的基本写法。文章实用性强,示例清晰,提醒了 JOIN 导致的笛卡尔积问题及拆分查询的方案。文章深度适中,缺少更复杂的优化案例和参考引用。
.NET 11 Preview 3 发布:C# 15 union 类型终补齐,Kestrel 暴增 40%
作者总结了 .NET 11 Preview 3 的核心改进。C# 15 引入联合类型并补齐 IDE 支持,当前需手动 polyfill。运行时降低异步门槛,可用 runtime-async=on,NativeAOT/ReadyToRun 异步复用减少分配并简化堆栈。JIT 优化包含 switch 折叠、倒序索引检查剔除和 x86 转换加速。WASM 加强 WebAssembly SDK、WebCIL 载荷与 Span 跨 JS 直传。基础库更新有 System.Text.Json 命名与忽略策略增强、ZstandardStream 并入压缩命名空间、ZIP CRC 校验与 SafeFileHandle 强化。SDK 与 ASP.NET 改进包括 .slnf CLI、dotnet run -e、Kestrel 吞吐提升和 webworker 模板。
.NET 调试器 netcoredbg 跨平台及其 LoongArch 架构支持进展
https://www.cnblogs.com/shanyou/p/19912576
本文介绍由三星主导的开源跨平台 .NET 调试器 netcoredbg。项目以 C++ 实现,托管于 GitHub,采用 MIT 许可并要求 Clang 编译。netcoredbg 支持 Linux、macOS、Windows、多种 CPU 架构以及 GDB/MI、DAP、CLI 等调试协议。文章论述其在构建完全自由软件 .NET 开发环境中的关键作用、版本演进与模块化架构。
SharpIDE: 基于 .NET 与 Godot 引擎的跨平台开源 IDE
https://www.cnblogs.com/shanyou/p/19930417/SharpIDE
SharpIDE 是面向 .NET 的跨平台开源 IDE,采用 MIT 许可证,GitHub 有 3,560 stars 和 112 forks。项目由 Matt Parker 主导,社区通过 PR 贡献,维护重心集中,存在长期维护风险。当前处于 v0.1.x 快速迭代,已推进调试器稳定、编辑器改进、反编译、文件搜索、RPC MSBuildHost 与 .NET 11 支持。项目标注 WIP 并提供完整变更日志与贡献指南,适合关注 .NET 工具生态的早期采用者。
MAF 快速入门(24)整合多个 Skill 来源
https://www.cnblogs.com/edisontalk/p/-/quick-start-on-maf-chatper24
文章介绍在 MAF 1.1.0 下实现企业级多来源 Agent Skill 管控。作者展示通过自定义 AgentSkillsSource 整合远程 HTTP、本地内存和基于用户角色的动态技能源。示例为企业 HR 助手,规则为仅全局通用技能加角色专属技能可见,本地同名技能覆盖远程。文章采用 Qwen3.5-35B-A3B 模型并引用 Microsoft.Agents.AI.OpenAI 包。文中给出 EmployeeRole 枚举、UserRoleHelper 过滤逻辑,并实现 SimulatedRemoteApiSkillsSource 拉取远程技能,强调工程化与可扩展性。
推荐一个开箱即用的.NET 权限管理平台:Magic.NET
https://www.cnblogs.com/shenchuanchao/p/19910115/magic-net-permission-management-platform
本文介绍开源项目 Magic.NET。该平台基于 .NET 6/7、Furion 与 SqlSugar,采用前后端分离和 RBAC 权限模型。默认 SQLite,可切换 SQL Server 或 MySQL。功能包含用户/角色/菜单管理、文件存储、定时任务、工作流与 SignalR 实时通讯。作者强调模块化设计、代码简洁与开箱即用。提供 Gitee 仓库与原文链接,适用于 ERP/CRM/OA 等企业后台和 .NET 初学者快速搭建或学习。
序列化 JSON 时崩了?99% 是 EF 延迟加载惹的祸,三种解法拿走不谢
文章用真实案例说明了在 Entity Framework 中因延迟加载导致 JSON 序列化抛出 ObjectDisposedException 的原因。作者展示了在 using 块内用 AsNoTracking().ToList() 只加载主表字段,DbContext 被释放后序列化器访问导航属性触发延迟加载,从而报错。文章拆解执行流程,解释 ToList() 并不自动 Include 导航属性的误区,并提出三种解决方案(示例从关闭延迟加载开始)。内容实用清晰,但原创性一般且缺乏引用支持。
踩坑记录:UTF-8、UTF-8-BOM 与 GB2312 读取的乱码真相
https://www.cnblogs.com/wenha/p/19917875
作者复现了一个编码乱码场景:UTF-8(无 BOM)文件用 GB2312 读取出现中文乱码,改为 UTF-8-BOM 后同样用 GB2312 读取却正常。文章用 C# StreamReader 示例(含 Encoding.RegisterProvider)对比 GB2312 与 UTF-8 解码。结论是 BOM(EF BB BF)被 Windows 识别后触发自动以 UTF-8 解码,导致看似"兼容"但本质是系统自动切换。作者解释了 BOM 概念、UTF-8 与 UTF-8-BOM 的差异,并提醒不要依赖系统检测,应显式指定或配置正确编码。文章技术性强且实用,但缺少引用且末尾略有中断。
SharpDbg 与 netcoredbg 深度对比分析
https://www.cnblogs.com/shanyou/p/19927753/SharpDbg-vs-netcoredbg
文章比较两个开源 .NET 调试器:SharpDbg 与 netcoredbg。SharpDbg 由 Matt Parker 于 2025 年 12 月开源,纯 C# 实现、无 C++ 依赖,基于 .NET 10 输出单一可执行文件,面向 SharpIDE 与 VS Code,重视变量可视化但社区规模小。netcoredbg 自 2017 年由三星主导,采用 C++/Clang 与 CMake 构建,支持多协议并被多种发行版收录,功能成熟并适合企业级生产与法务审查。文章将两者分别定位为"体验优先"和"全面兼容"的替代路径,并指出 netcoredbg 在兼容性和稳健性上更具优势。
最新.NET 新手入门学习网站合集(2026 更新版)
https://www.cnblogs.com/shenchuanchao/p/19929395/dotnet-beginner-learning-websites-collection
本文整理了 16 个适合入门的.NET 学习网站。文章按官方资源、交互式平台和实战教程分类。它推荐 Microsoft Learn 与官方文档为首选,包含 C#指南、.NET 基础和社区入口。它列出 freeCodeCamp、LearnCS、Tutorialspoint 等可在线实操的平台。它还收录 ZetCode、Blazor 入门合集、dotnet-guide 和 Pluralsight 等实战教程与代码实验室。内容强调零基础友好、交互式练习与可运行示例,覆盖 C#、ASP.NET Core、Blazor、EF Core 与云原生相关主题,适合想快速上手并构建项目的初学者。
【译】Visual Studio 三月更新 ------ 打造专属自定义 Agent
https://www.cnblogs.com/MeteorSeed/p/19899390
本文介绍 Visual Studio 2026 Insiders 中针对 GitHub Copilot 的多项更新。用户可在仓库中通过 .agent.md 创建定制 Copilot Agent,以接入团队工作流、工具和外部知识源。Agent 支持复用技能,技能存放于 .github/skills 或用户目录,并在对话中激活。新工具 find_symbol 提供语言感知的符号导航,支持 C++、C#、Razor、TypeScript 及其他 LSP 语言。企业可通过 MCP 白名单治理服务器连接。Test Explorer 新增"Profile with Copilot"性能分析,默认支持 .NET。调试时显示实时性能提示并可由 Copilot 给出优化建议。
开源项目 PocoEmit.Mapper 重构之扑风捉影
https://www.cnblogs.com/xiangji/p/19899326
文章定义了 IProjection<T> 接口,仅含 TryConvert 方法用于尝试将同类型对象投影并返回转换结果。文章演示三种投影模式:Prefix 在成员名前加前缀映射(示例 User->UserDTO),Filter 仅保留映射字段,Through 映射并保留原字段,Cross 同时保留原字段与映射字段。示例以 C# record 与字典委托实现,并给出 SQL 等价和流程图,提及 PocoEmit.Mapper。文章实用性强但缺少实现细节、结尾被截断且无引用说明。
AScript 函数体系详解
https://www.cnblogs.com/rockey627/p/19897604
AScript 是开源的 C#动态脚本解析与执行库。它支持在脚本内定义函数、匿名函数、递归与重载,并支持表达式体简写。库允许注入外部委托、类静态方法与类实例方法到脚本上下文。通过实现 IFunctionEvaluator 和 IFunctionBuilder,开发者可自定义参数匹配与编译控制。AScript 还能生成.NET Expression/Lambda 和可复用委托,便于运行时扩展与与 C#互操作。示例展示了函数定义、注入 Math 和 Random 方法以及断言测试用法。
Maui Blazor 在 macOS 上 video 元素无法全屏的修复方法
https://www.cnblogs.com/Yu-Core/p/19924137
问题:.NET MAUI Blazor 在 macOS 上嵌入 <video> 后,点击全屏仅填满 BlazorWebView,不进入 macOS 独立桌面空间。原因:Mac Catalyst 基于 UIKit 的 iOS WKWebView,不支持桌面 WebKit 的 element.requestFullscreen 与 fullscreenchange。发现可用信号为 iOS 遗留事件 webkitbeginfullscreen 与 webkitendfullscreen。方案:在网页端监听这两个事件,通过 WKScriptMessageHandler 将布尔值传到原生层。原生层绕过 UIKit,调用 AppKit 的 NSWindow toggleFullScreen: 切换系统全屏,并先检查窗口实际状态以避免重复切换。该桥接恢复了预期的系统级全屏体验。
利用 surging 网络组件重构插件开发
https://www.cnblogs.com/fanliang11/p/19917966
本文提出基于抽象组件的 Agent 插件架构,解耦网络组件并支持动态加载。示例用 C#展示 TimePlugin 与注册器,说明通过KernelFunction和Description暴露能力。文章强调单一职责、语义化命名、简洁输入输出与完善错误处理的最佳实践。该设计提升了扩展性与可维护性,但缺少深层实现细节与引用支持。
AI 赋能微服务工程化:Surging Engine-CLI 的插件化 Agent 架构革新
https://www.cnblogs.com/fanliang11/p/19902860
文章介绍在.NET 微服务生态中,Surging Engine-CLI 集成 Semantic Kernel 与 LLamaSharp,构建本地化 LLM 推理与 AI Agent 的插件化架构。它通过标准化函数契约、插件注册与语义编排,把自然语言指令转为插件调用,自动完成项目初始化、配置与扩展任务。方案兼顾私有化部署、性能与 .NET 原生适配,显著提升工程化效率与智能化能力。
surging 的 Agent 插件研发全流程:从定义到落地
https://www.cnblogs.com/fanliang11/p/19911629
本文提出面向大模型 Agent 的插件化微服务引擎设计,聚焦把插件作为连接 AI 与外部工具的桥梁。文章以 Time 插件为例,展示了 IAgentPlugin 接口、AiAgent元数据和KernelFunction函数暴露三层架构,说明框架通过反射发现插件并动态调度。文中给出 AgentFuncEntry 与管理器接口,强调参数说明、返回值规范和日志监控的重要性。作者建议扩展生命周期方法、元数据版本与依赖信息以支持生态化运维。整体内容兼顾设计理念与实现示例,便于开发者落地实现 Agent 插件体系。
使用 C# 提取 Word 文档中的表格数据
https://www.cnblogs.com/jazz-z/p/19895710
本文演示如何用 C# 和 Free Spire.Doc 无需安装 Word 提取文档表格并导出为结构化文本。文章说明了开发环境、NuGet 包安装及免费版表格数量限制。实现思路清晰,按节遍历表格、按行按单元格提取并以制表符分隔保存。示例代码提供了主要逻辑,但内容被截断且含 HTML 实体编码问题。该方法实用、部署简单,适合学习和小型业务场景。
今日人物
拉吉·瑞迪 (英语:Dabbala Rajagopal "Raj" Reddy,1937 年 6 月 13 日---),印度裔美国计算机科学家和图灵奖获得者2。他也是计算机科学和人工智能的早期先驱人之一,现任斯坦福大学3和卡内基梅隆大学的教授,有超过 40 多年的教学经验。41979 年起5,他是卡内基梅隆大学计算机学院Robotics Institute的创始领导人。61994 年,他因其人工智能杰出工作,获得计算机领域最高奖项图灵奖,他是该奖项亚洲第一人。2

C# .NET 交流群
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET 性能优化经验的群组,主题包括但不限于:
- 如何找到.NET 性能瓶颈,如使用 APM、dotnet tools 等工具
- .NET 框架底层原理的实现,如垃圾回收器、JIT 等等
- 如何编写高性能的.NET 代码,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET 问题和宝贵的分析优化经验。目前一群已满,现在开放二群。 可以加我 vx,我拉你进群: ls1075 另外也创建了 QQ Group: 687779078,欢迎大家加入。