国内文章
终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名)
https://www.cnblogs.com/sheng_chao/p/18581139
升讯威在线客服与营销系统由.net core和WPF开发,旨在开放、开源、共享。开发者为解决360与其他国产管家的误报问题,采用数字签名以提升软件安全性。使用Signcode.exe工具可为多种文件类型提供数字签名,增强可信度,并通过时间戳服务维持有效性,避免重签名。生成数字签名证书涉及自签名证书创建及导出,Signtool用于签名执行。制作根证书和子证书确保许可范围,通过Signcode完成文件签名。同时,强调证书安全及描述信息准确性,以防安全问题及证书吊销。该系统保障24/7稳定运行,面向.NET社区,倡导开源合作。
.NET Core 锁(Lock)底层原理浅谈
https://www.cnblogs.com/lmy5215006/p/18585588
本文介绍了CPU原子操作的概念,强调其类似于数据库事务。CPU能保证单条汇编的原子性,通过锁机制实现多条汇编的原子性。Interlocked类利用CPU锁保障原子性,尤其适用于处理8字节数据的long类型。在不同架构中,x86面对超过4字节的数据不保证原子性,需要使用64位架构或CPU锁机制。用户态锁和内核态锁各有优缺点,用户态锁在高并发情况下可能浪费CPU资源。volatile关键字用于避免编译器在多线程中错误优化。示例代码展示了使用Interlocked类实现简单自旋锁,以及通过SpinWait让CPU在无竞争获取锁时减轻负担。
ASP.NET Core 9.0 中新增的MapStaticAssets() 中间件
https://www.cnblogs.com/vipwan/p/18582297
Core 9.0版本新增了MapStaticAssets中间件,旨在替代UseStaticFiles,解决静态资源传输压缩、缓存效率低和指纹识别缺乏的问题。MapStaticAssets提供静态资产的压缩与指纹识别,采用基于内容的ETag,提升资源加载速度及用户体验。其在发送请求时会设置ETag、缓存标头,并使用压缩中间件。尽管如此,UseStaticFiles在处理虚拟文件等方面仍有其不可替代性。建议在可用情况下使用MapStaticAssets以提升系统性能。
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
https://www.cnblogs.com/Can-daydayup/p/18590574
在软件开发中,文件编码问题不可忽视。不同操作系统和编辑器可能导致乱码和编译错误。C#编写的Visual Studio扩展插件FileEncoding能够实时显示文档编码,并允许用户轻松修改。该插件提高了跨平台开发的效率,方便用户识别和调整文件编码。插件源代码和使用方法可以在市场和GitHub找到。此外,该项目已被收录到C#/.NET优秀项目列表中,有助于开发者了解最新动态。
Natasha v9.0 为 .NET 开发者提供 [热执行] 方案.
https://www.cnblogs.com/NMSLanX/p/18261797
Natasha v9.0 推出了热执行方案,支持在控制台和新版Asp.net Core架构中动态重编译项目,无需停止工程即可更新结果。这项技术通过语法树重写与动态编译实现,区别于传统的热重载。热执行能够快速响应文件改动,适合技术初学者和项目初期开发者。通过添加指令来优化重编译过程,如释放模式编译、异步代理、排除二义性引用等。项目支持.NET 3.0及以上版本,适用于不含Source Generator的版本。全新代理执行过程保证参数清晰,程序只在首次运行时执行特定代码。
一款基于 .NET + Blazor 开发的智能访客管理系统
https://www.cnblogs.com/Can-daydayup/p/18591424
访客管理在各类场所中变得越来越重要。传统方式低效且易出错,而基于.NET和Blazor的智能访客管理系统采用数字化手段优化管理流程,提高安全性与效率。系统具备快速注册、直观仪表板、多维度设置、即时警报等功能,支持多语言和多平台操作。项目同时开源,鼓励开发者参与与贡献,旨在提升C#/.NET领域的开发效率。该系统确保了访客管理的规范性和高效性,是现代机构管理的重要工具。
基于.NetCore开发博客项目 StarBlog - (32) 第一期完结
https://www.cnblogs.com/deali/p/18582026
本文记录了 StarBlog 项目的状态及 v2 版本的开发规划。作者自2022年以来开发该项目,以熟悉AspNetCore为目标,过程中也进行了Vue前端学习。作者意识到目前的项目过于基础,计划专注于其他项目,如StarSSO、EchoSubs等。此外,作者指出了当前版本的不足,包括接口方法使用不当、返回数据类型不合理等,并计划在v2中解决。此外,还规划了通过使用Next.js和React技术栈重构前后台,增强访问统计和文章编辑功能,引入AI功能和全文检索引擎。作者总结AspNetCore的功能,重点介绍异常处理和中间件的应用。
构建你的.NET Aspire解决方案
https://www.cnblogs.com/huangmingji/p/18588251
.NET Aspire 是一组工具和模板,用于构建云原生 .NET 应用程序。它通过处理特定问题的 NuGet 包支持小型互连微服务。它改善了云原生应用程序的构建体验,包括应用程序的编排和集成。 .NET Aspire 提供适用于 Visual Studio 和 CLI 的项目模板,确保应用程序与服务无缝连接。用户需要满足一定前提条件,如 .NET 8.0、Docker 和支持的 IDE。通过命令行工具安装模板后,用户可以创建最小的 .NET Aspire 项目,协调多服务的业务流程。该工具包支持多种测试项目格式,适用于不同类型的开发需求。
TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面
https://www.cnblogs.com/mingupupu/p/18592170
本文介绍如何使用WPF/C#构建TesseractOCR用户界面,以提升命令行使用的便利性。首先,用户需在本地安装TesseractOCR并从GitHub下载依赖框架的压缩包。界面设计简单易用,支持中文和英文识别。作者说明了两种封装方法:一种是对命令行的封装,另一种是调用C++ API。当前实现以命令行封装为主,通过Visual Studio 2022和.NET 8开发。核心代码展示了如何执行OCR命令并处理输出,保持简单直观。
Asp.net MVC中的Http管道事件为什么要以Application_开头?
https://www.cnblogs.com/jikhww/p/18582958
文章讨论了在API请求结束时释放数据库连接的方法。作者提到通过实现IHttpModule和在web.config中增加配置可以达到目的,但比较麻烦。作者建议在Global.asax.cs中实现Application_EndRequest方法来释放连接,并提供了具体实现细节。随后,作者对为什么必须使用Application_EndRequest方法进行了源码分析,强调HttpApplicationFactory类与MvcApplication实例的关系,从而解释了Global.asax作为入口文件的原因。
使用 SemanticKernel 对接 Ollma
https://www.cnblogs.com/kklldog/p/18589711/sk-ollama
本文介绍了如何使用 Microsoft 的 SemanticKernel 框架与 Ollama 聊天服务对接。首先,需在本地安装 Ollama 服务和相应模型,之后创建 C# 控制台应用程序并安装必要的包。接着,引入相关命名空间并配置服务端点和模型 ID,设置聊天服务。然后,文章展示了一个简单的聊天循环,让用户输入和获取 Ollama 回复。最后,希望通过这篇博客,读者能更好地理解和使用这些工具。
构建你的.NET Aspire解决方案
https://www.cnblogs.com/huangmingji/p/18588251/build-your-dotnet-aspire-solution
.NET Aspire 是构建生产就绪云原生应用的工具集,提供 NuGet 包处理特定问题。云原生应用由微服务组成,.NET Aspire 提供一致性工具和模式,改善分布式应用开发体验。它支持本地开发环境的多项目编排和与常用服务的集成,提供适用于Visual Studio等工具的模板。前提条件包括 .NET 8.0 或 9.0、Docker 环境和合适的 IDE。.NET Aspire 提供多个模板,如入门应用、应用主机和测试项目。用户可创建和配置微服务,利用 NuGet 包集成 Redis、Postgres 服务。
dotnet core微服务框架Jimu ~ 基础网关
https://www.cnblogs.com/flamesky/p/18583715
文章介绍了如何使用.NET Core和Asp.Net Core创建网关,作为微服务的统一入口。步骤包括创建项目、添加引用和配置Startup文件,以支持Jimu和Consul进行服务发现和治理。网关通过HTTP协议接受请求,并使用TCP/IP协议调用微服务。最终实现了基本的网关功能,支持跨域和日志记录,以及服务治理的初步设置,包括服务器列表和健康状态的展示。
GZY.EFCore.BulkExtensions 支持达梦数据库的EF Core批量操作库详解
https://www.cnblogs.com/GuZhenYin/p/18588733
这篇文章介绍了EFCore.BulkExtensions库的改造,以支持.NET 5.0下的MySQL和达梦数据库。文章详细解释了两种数据库的批量操作实现,包括批量插入、批量修改和批量删除。对MySQL,使用SqlBulkCopy进行批量插入,利用on duplicate key update语法进行批量修改,使用DELETE INNER JOIN语法进行批量删除。对达梦数据库,采用DmBulkCopy进行批量插入,采用MERGE INTO语法进行批量修改,批量删除部分与MySQL类似。文章还强调了配置和操作的注意点,如MySQL的local_infile功能。尽管7.0+版本支持条件修改和删除,但批量处理功能尚未完全支持。
http请求超时, 底层发生了什么?
https://www.cnblogs.com/JulianHuang/p/18586745
文章介绍了OpenResty模拟超时服务,通过Golang和.NET的HttpClient默认设置,解释了客户端超时的现象及其原因。文中使用的.NET代码设置了3秒超时,结果在客户端抛出异常,而服务端日志显示正常200响应。使用Wireshark分析TCP包,可见客户端在超时后终止连接,但服务端仍继续处理。这解释了服务端监控无5xx错误的现象。同时说明服务器通过CancellationToken感知客户端取消请求以记录过期请求。
开源 - Ideal库 - Excel帮助类,TableHelper实现(三)
https://www.cnblogs.com/hugogoos/p/18580410
该内容讲解了如何将DataTable转换成对象集合的方法。首先,通过反射来实例化对象和赋值,将表的列名与类的属性名对比,若属性设置了Description特性,则使用特性值匹配列名。实现过程中,需确保类类型合法且表格可以转换,处理时先用object装箱再拆箱结构体。代码片段展示了具体实现,通过单元测试验证转换的正确性。
开源 - Ideal库 - Excel帮助类,ExcelHelper实现(五)
https://www.cnblogs.com/hugogoos/p/18589718
本文详细介绍了ExcelHelper类的单元测试,包括读取Excel文件到DataSet的不同方法。代码示例展示了如何验证读取的工作表数量及其具体内容,包括表名和数据。文中对各种用例进行了测试,如读取所有工作簿、从特定工作簿读取、处理不存在的工作簿等。测试确保了方法的可靠性和准确性,为Excel数据处理提供了实用的技术支持。
WinForm 开源组件 Realtiizor
https://www.cnblogs.com/chenyishi/p/18593064
Realtiizor 是一款用于 WinForm 应用的现代组件库,具备美观的界面设计和丰富易用的组件。它采用 Material Design 元素,提升了应用程序的视觉效果,吸引用户。组件库中包含多种定制化的按钮和文本框,简化了开发流程,缩短了开发时间。Realtiizor 在 .NET 8 环境下运行稳定,与常见库兼容,性能优化良好。安装过程简单,通过 NuGet 包管理器即可实现。在实际应用中,开发者能够轻松创建样式独特的窗体。通过提供的示例,展示了如何构建用户信息录入界面。整体来说,Realtiizor 提供了高效率和良好体验的开发工具.
主题
OpenSilver 3.1 简介:首款适用于 VS Code 的 XAML 设计器、现代 UI 主题、WPF Everywhere 等
https://opensilver.net/announcements/3-1/
发布 v3.0.3 / v3.0.301(3.0.308) · MessagePack-CSharp/MessagePack-CSharp
https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v3.0.3
https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v3.0.301
发布 v9.0.2 · npgsql/npgsql
https://github.com/npgsql/npgsql/releases/tag/v9.0.2
宣布 Oracle EF Core 9
https://medium.com/@alex.keh/announcing-oracle-ef-core-9-74f627a01891
调用异步功能:.NET 9 中的 WinForms 有何等待 - .NET 博客
https://devblogs.microsoft.com/dotnet/introducing-winforms-async-apis/
降临节日历
- 在配备 NPU 的 Copilot+ PC 上运行 NPU - Qiita
- 关于使 WinUI3 MarkdownControl 与 TextMate 兼容的故事 - Qiita
- 用 C# 操作 vJoy(创建 feeder)- Qiita
- 启用Datadog的连续分析器后问题立即得到解决 - Qiita
- 如何使用 MAUI 处理程序 - Qiita
- 关于 C# 中尝试创建通货膨胀游戏时的 BigInteger - Qiita
- TextMateSharp 简介 - Qiita
- [C#] 使用表达式树和源生成器的高性能查询生成器简介 - Qiita
- 序列化/反序列化具有大量对象的json数组 - Qiita
- [C#] 关于.NET 9引入的OrderedDictionary - Qiita
- 我创建了一个使用 Cloud Vision API 记录收据的程序 - Qiita
- [C# .NET 9.0] 尝试使用 InlineArray 创建值类型字典 - Qiita
- .NET9、C#13 的新功能拾取 - Qiita
- 关于 Win2D 第 6 部分 PixelShaderEffect - Qiita
- Heroku 上对 .NET 的官方支持 - Qiita
- [C#] 遗留代码模式和现代改进方法 - Qiita
- Win2D 第 5 部分 图像加载和效果 - Qiita
- [C#] 使用模式匹配简洁地编写条件分支 - Qiita
- 关于Win2D第5部分画线-Qiita- 关于不喜欢Dim的话题-Qiita
- .NET 9 中添加到 LINQ 的方法 - Qiita
文章、幻灯片等
轻松发布到 Linux 上的 Azure WebJobs - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/effortless-publishing-to-azure-webjobs-on-linux/
使用 YamlDotNet 源生成器进行本机 AOT
https://andrewlock.net/using-the-yamldotnet-source-generator-for-native-aot/
C# 性能调优示例#1
https://zenn.dev/boostdraft/articles/bd86e264f99d89
GraphQL 入门#1 与 Strawberry Shake (.NET)
https://zenn.dev/masakura/articles/606435acb359cb
- GraphQL #2 with Strawberry Shake (.NET),由 JetBrains Rider 编辑
- 使用 Strawberry Shake (.NET) 连接到 GraphQL #3 Shopify
- GraphQL #4 在 Strawberry Shake (.NET) 中自定义到 GraphQL 类型的映射
- 在 Strawberry Shake (.NET) 中使用 GraphQL #5 GraphQL 联合
使用 Blazor 切换亮/暗模式 + 将保存模式切换到本地存储 - Qiita
https://qiita.com/masayahak/items/8173bd61845bb5774370
将本地 AI 模型与 .NET Aspire 结合使用 - .NET 博客
https://devblogs.microsoft.com/dotnet/local-ai-models-with-dotnet-aspire/
C# 程序员 JavaScript 备忘单(LINQ 版)
https://zenn.dev/zead/articles/js-cheat-sheet-for-linq
.NET 10 中 LINQ LeftJoin 运算符的提案
https://medium.com/@malarsharmila/proposal-for-a-linq-leftjoin-operator-in-net-10-af74635079a6
尝试将通用主机与 WPF 结合使用
https://zenn.dev/microsoft/articles/wpf-generic-host
继续使用非阻塞代码清理 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/keep-working-with-non-blocking-code-cleanup/
释放新潜力:.NET 9 中的实体框架核心增强功能
https://dev.to/leandroveiga/unlocking-new-pottial-entity-framework-core-enhancements-in-net-9-1875
在 C# 中模拟 gRPC 客户端:Fake It Till You Make It
https://dev.to/maximiliysiss/mocking-grpc-clients-in-c-fake-it-till-you-make-it-4d24
事件溯源很简单! :用 400 行创建的简单内存框架
https://zenn.dev/jtechjapan_pub/articles/f7968a3f2fb6d5
在 Uno 平台中构建 Bluesky 客户端
https://mzikmund.dev/blog/building-a-bluesky-client-in-uno-platform
2024 年运行 100 万个并发任务需要多少内存?
https://hez2010.github.io/async-runtimes-benchmarks-2024/
使用 Dependabot 管理 .NET SDK 更新 - .NET 博客
https://devblogs.microsoft.com/dotnet/using-dependabot-to-manage-dotnet-sdk-updates/
在 Visual Studio 中引入 GitHub Copilot 聊天的代码引用 - Visual Studio 博客
用for语句检查TLB效果 - Qiita
https://qiita.com/pea1205/items/6279235179f2b339ff6a
内联返回值如何简化 Visual Studio 2022 中的调试 - Visual Studio 博客
从转换为 UUID v7 的 Guid 中提取时间戳 - Qiita
https://qiita.com/higege-amdeker/items/098cd7414a11af8d83cb
使用对接窗口创建信息丰富的应用程序 ~AvalonDock~ - Qiita
https://qiita.com/NSS_FS_ENG/items/e16ea3c25e42608c4a25
SRTP推荐
https://zenn.dev/midoliy/articles/a9048d2eada7ba
如何在 MVVM 架构中使用 Microsoft.Extensions.DependencyInjection ~ with Dog
https://zenn.dev/sakaki_web/articles/42c5fdf8f14cf0