国内文章
开源GTKSystem.Windows.Forms框架让C# winform支持跨平台运行
https://www.cnblogs.com/easywebfactory/p/18289178
GTKSystem.Windows.Forms框架是一种C# winform应用程序跨平台界面开发框架,兼容C#原生控件,无需额外学习,支持跨平台运行。其优势包括开源、与visual studio兼容、与C#原生控件兼容、支持.NET控制台和GTK、支持多种操作系统、主题界面定制、多种控件及布局方式,以及扩展控件功能。
记录荒废了三年的四年.net开发的第一次面试
https://www.cnblogs.com/ggtc/p/18297137
面试者描述了自己从国企到小微企业的工作经历与哲学、经济学的学习过程,通过夜以继日的学习提升了技术能力,决定离职面试深圳老牌金蝶公司。整个面试过程充满疑惑,他回答了对方关于多线程、异步、Web开发等技术问题,但始终无法明确对方的真实意图。最终面试在困惑与紧张中草草结束。
使用Terminal.Gui构建功能强大的.NET控制台应用
https://www.cnblogs.com/Can-daydayup/p/18282774
本文介绍了适用于.NET的跨平台终端UI工具包Terminal.Gui。该工具包支持Windows、Mac和Linux/Unix,提供键盘和鼠标输入、灵活的布局系统、剪贴板支持及高级应用特性,适用于需要强交互性的场景。文章还提供了如何安装、创建和运行Terminal.Gui项目的示例代码,并展示了消息框、简单文本用户界面和用户登录界面的实现。最后,提供了项目源码和相关链接。
一套基于 Ant Design 和 Blazor 的开源企业级组件库
https://www.cnblogs.com/Can-daydayup/p/18294965
该文章介绍了一套基于Ant Design和Blazor的开源企业级组件库Ant Design Blazor,强调其高质量组件、跨平台兼容性和实时交互功能。Blazor是一种新兴的Web应用框架,利用C#编程语言可提高开发效率和用户体验。文章还提供了相关的开源地址和在线文档,并推荐读者关注C#/.NET领域的优秀项目和框架精选。最后,文章介绍了DotNetGuide技术社区,邀请开发者加入以分享技术文章和项目经验。
.NET 9 预览版 5 发布
https://www.cnblogs.com/shanyou/p/18293072
微软发布了.NET 9预览版第五个版本,预计将在今年晚些时候正式发布,并将获得18个月的支持。新版本包括性能改进和新特性,如增强的AI能力、优先级无界通道、子字符串搜索以及更灵活的OpenTelemetry活动链接。此外,ASP.NET Core 9预览版主要优化了静态网络资产的交付和Blazor Server的重连体验,还简化了Blazor Web应用的认证状态序列化。最新的.NET MAUI Blazor混合和Web解决方案模板简化了跨平台应用的开发并优化了性能。
.NET 9 预览版6发布
https://www.cnblogs.com/shanyou/p/18297173
微软发布了 .NET 9 的第6个预览版,主要更新涵盖运行时、SDK、.NET MAUI、ASP.NET Core和C#。Loongarch的Native-AOT代码合并进来,龙芯.NET可同步社区代码。ARM64代码生成改进,优化执行性能。SDK更新提高项目安全性,新增指令集支持矢量化操作。ASP.NET Core的更新包括静态Web资产的指纹识别和分布式跟踪改进。大量错误修复和质量改进确保了稳健的应用程序开发。GitHub讨论和发行说明中提供更多细节。
ASP.NET Core中创建中间件的几种方式
https://www.cnblogs.com/Can-daydayup/p/18297439
本文介绍了在ASP.NET Core中添加和创建中间件的四种常见方式。首先,介绍了中间件的作用和使用场景,包括认证、授权、日志记录等。然后,讲解了通过请求委托添加中间件、按约定添加内置中间件、创建自定义中间件类以及基于工厂的中间件的具体实现方法。每种方法都结合代码示例详细说明了如何配置和使用中间件。
记一次 .NET某酒业业务系统 崩溃分析
https://www.cnblogs.com/huangxincheng/p/18291452
本文例子介绍了一位朋友的程序总是关闭时崩溃,通过使用WinDbg工具分析崩溃原因。通过命令和线程栈观察,确定是Windows线程池的timer回调抛出异常。接着,文章分析了clr源码,解释了在CLR挂起后试图调用托管代码时会抛出异常的原因,并给出简化后的源码示例。
记一次 .NET某上位视觉程序 离奇崩溃分析
https://www.cnblogs.com/huangxincheng/p/18297750
文章讲述了通过WinDbg分析托管堆崩溃的过程。朋友请求作者分析一个dump文件,发现问题出在GC对象标记,使用各种命令深入解析对象内存,确认对象MethodTable地址有误,由bit位翻转导致。此外,bit 0翻转是正常现象,但bit 32翻转无法解释,最终导致崩溃。
WPF/C#:在WPF中如何实现依赖注入
https://www.cnblogs.com/mingupupu/p/18295546
本文通过WPF Gallery项目学习依赖注入的概念与在WPF中实现依赖注入的方法。依赖注入是一种设计模式,通过将对象创建和依赖关系管理从对象内部转移到外部容器,提高代码的可维护性、可测试性和灵活性。依赖注入包括构造函数注入、属性注入和方法注入。实施依赖注入有助于降低耦合度、提高灵活性、促进关注点分离等。文章进一步通过具体代码演示了如何在WPF项目中配置和实现依赖注入。
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
https://www.cnblogs.com/wuhuacong/p/18291260
本文介绍了如何在Winform程序中设置隐藏按键,以便管理员在不公开功能入口的情况下调出特殊设置界面,避免普通用户误操作。步骤包括准备界面功能,移除菜单入口,以及设置窗体属性KeyPreview为True,通过按键事件跟踪组合按键,从而执行特定操作。
C#使用SendMessage进行进程间通讯
https://www.cnblogs.com/wihalo/p/18293731
本文介绍了一种在WPF应用中实现拖动文件到桌面图标并自动打开的方法。通过在OnStartup事件中获取文件名并处理,解决了软件启动后的参数传递问题。使用窗口句柄实现跨进程通信。
详解C#委托与事件
https://www.cnblogs.com/ayic/p/18295844
在C#中,委托是一种引用类型,用于封装方法的引用,可以作为参数传递,或将多个方法组合。定义委托时需指定返回类型和参数。创建实例使用new关键字,调用则类似调用普通方法。多播委托可调用多个方法。C# 2.0引入匿名方法,C# 3.0引入Lambda表达式。事件是基于委托,用于消息发送机制,实现发布者与订阅者的解耦。事件通过委托类型定义,通常通过属性暴露。触发事件使用触发方法,并订阅或取消订阅事件。
基于EF Core存储的国际化服务
https://www.cnblogs.com/coredx/p/18294729
文章介绍了.NET官方的国际化资源扩展包Microsoft.Extensions.Localization的问题,并提出了解决方案。通过重新编写一个基于上下文工厂的包,解决官方包无法动态管理翻译数据的问题。文章详细描述了实现和使用方法,包括上下文、服务注册和自定义实体类型的设置。代码例子展示了如何在ASP.NET Core中应用这个新的扩展包。
【一天一点.NET小知识】运用向量Vector<T>加速求和计算
https://www.cnblogs.com/VAllen/p/18293030/accelerate-summation-calculations-using-vector
文章介绍了 .NET 版本中的 Vector<T>
类型及其在计算中的应用,特别是 Linq 中。通过代码示例展示如何利用 Vector<T>
提高求和和相减操作的性能,同时解释了向量计算带来的优势和硬件要求。适用于 .NET Standard 2.0 及以上版本。
WTM的项目中EFCore如何适配人大金仓数据库
https://www.cnblogs.com/wdw984/p/18289632
WalkingTec.Mvvm框架于2013年开发,旨在提高开发效率和统一代码风格,2017年移植到.Net Core并优化。框架具有高效、稳定、速度快等特点,支持多种前端模式和数据库。人大金仓是国产数据库产品,具高可靠、高性能、高安全等特点,提供全面数据库管理。迁移注意事项包括数据库模式创建、字段类型转换、自增字段实现等。针对WTM集成的Elsa工作流和不同数据库类型的注意事项做了详细说明。
大语言模型的应用探索---AI Agent初探!
https://www.cnblogs.com/mingupupu/p/18290420
本文介绍了AI Agent的概念和实现方法,通过开源大语言模型Qwen2-7B-Instruct与LLM应用框架SenmanticKernel实现AI Agent。文章从简单例子入手,演示了AI Agent如何完成字符串打印和数据库查询等任务,并详细讲解了提示工程的原理和应用。最后介绍了在SemanticKernel中导入插件的方法。
Simple WPF: WPF自定义一个可以定义步长的SpinBox
https://www.cnblogs.com/mrchip/p/18290697
本文介绍了如何使用WPF通过按钮和文本输入框实现一个简单的SpinBox数字输入用户组件,包括自定义组件的布局和依赖属性的定义与使用知识点。
使用中台 Admin.Core 实现了一个Razor模板的通用代码生成器
https://www.cnblogs.com/morang/p/18294868/zhontai_admin_core_module_dev_common
本文介绍了如何通过 Admin.Core 框架实现模板生成功能。首先,简要回顾了代码生成器的基础模块,然后详细描述了如何通过 Razor 模板引擎生成项目代码文件,并实现预览和下载功能。文中具体演示了模板路径和内容的生成过程,并提供了压缩下载代码文件的核心实现方法,使整个流程更加完整和实用。
C# 轻量级 ORM 框架 NPoco 的简单应用
https://www.cnblogs.com/timefiles/p/18294967
本文介绍了 NPoco,一个 PetaPoco 分支,强调其在多种数据库系统上的适用性。详细讲解了如何在使用 SQLite 数据库的控制台项目中安装所需的 NuGet 包,并演示了使用实体类 User 和数据库类 DbFactory 的基本操作,包括增删改查。文章注重实用性和代码示例,提供了映射关系的设置和特性说明。
【译】You probably should stop using a custom TaskScheduler
https://www.cnblogs.com/zhangchen-trunk/p/18297426
本文讨论了TaskScheduler在.NET中的实现,通过详细代码示例展示了如何使用DedicatedThreadsTaskScheduler限制并发任务数。文章解释了其工作原理,并介绍了创建和管理自定义任务调度器的方法,适用于需要特定并发控制的项目。
使用FastReport报表动态更新人员签名图片
https://www.cnblogs.com/wuhuacong/p/18291466
文章介绍了如何使用FastReport动态更新报表中的人员签名图片。首先设计FastReport报表,并使用图片组件代替签名。然后,通过C#代码实现根据数据库中存储的图片地址动态替换签名图片。具体步骤包括定义报表参数、读取医生签名图片地址、构建数据集合并赋值给报表对象,最后生成PDF文件供移动端查看。文章提及FastReport可以在Winform、Vue的BS端和WPF应用程序上使用,方便多终端复用。
ChatGPT学习之旅 (8) 单元测试助手
https://www.cnblogs.com/edisonchou/p/-/chatgpt_learning_notes_part8
文章介绍了一个单元测试助手的提示词,通过GPT4-o模型生成.NET开发中的单元测试代码,提升代码质量,减少开发工作量。助手支持C#、xUnit、Moq框架,用户输入相关定义后生成测试代码。文章详细描述了步骤,包括偏好选择、模型和常量定义、依赖对象定义等。
Simple WPF: WPF 实现按钮的长按,短按功能
https://www.cnblogs.com/mrchip/p/18289007
本文介绍了如何实现一个支持长按和短按功能的按钮组件。通过设置一个名为LongPressTime的DependencyProperty定义长按的阈值,并使用DispatcherTimer来监控是否达到长按。代码示例展示了如何在XAML中使用该组件,并通过C#代码实现按钮的点击和长按事件。最终,通过抛出RoutedEvent实现长按事件的定义和触发。
【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
https://www.cnblogs.com/lulight/p/18297088
本文介绍了一个工具,用于在两个Redis端点之间复制数据。Redis Copy .NET8 是一个基于.NET 8的控制台工具,通过修改AppSetting.json文件或使用命令参数来设置源和目标Redis连接。工具的工作流程包括准备Redis源和目标信息,以及复制Redis Keys的子任务。使用StackExchange.RedisConnectionMultiplexer类默认创建20个连接,检查并处理相关内存信息和Keyspace信息,并根据Keys数量拆分成更多子任务。
动手学Avalonia:基于硅基流动构建一个文生图应用(一)
https://www.cnblogs.com/mingupupu/p/18294916
本文介绍文生图技术和Stable Diffusion模型,并通过硅基流动平台的API使用该模型,此外还讲述如何基于Avalonia和C#构建跨平台应用。作者分享了开发过程中的一些避坑经验和项目架构信息。
Bond------大数据时代的数据交换和存储格式
https://www.cnblogs.com/thanks/p/18289706
文章介绍Bond格式,该格式由Microsoft维护,适用于各种平台和语言的数据交换。Bond文件可以编译成不同的类,支持RPC调用。Bond支持多种基本数据类型、列表、字典、枚举等,并具有高效的二进制序列化特性,通过示例展示了其在大数据环境下的优势。
Simple WPF: WPF实现一个MINIO等S3兼容对象存储上传文件的小工具
https://www.cnblogs.com/mrchip/p/18293111
该文章讲述了在阿里云ECS上搭建MINIO服务并通过S3兼容API开发对象存储工具的过程。主要包括使用AWSSDK调用S3 API、配置App.config文件、响应按钮事件、编写上传函数等具体步骤。文章详细展示了从创建WPF项目到编写异步上传函数的完整实现方法。
ECMA标准ECMAScript(JavaScript的一个标准)和C#
https://www.cnblogs.com/shanyou/p/18302159
2024年6月,ECMAScript 2024规范被正式批准为最新标准。ECMAScript定义了JavaScript语言的核心,JavaScript广泛用于Web和前端开发。C#语言当前最新版本为2023年发布的ECMA-334第7版,主要用于.NET框架下开发。C#和JavaScript在软件开发领域中扮演重要角色。ISO/IEC 23270:2018是C#的国际标准,包括了程序的形式、语法、语义规则等。早期版本标准已被替代。
主题
.NET 和 .NET Framework 2024 年 7 月服务版本更新 - .NET 博客
https://devblogs.microsoft.com/dotnet/dotnet-and-dotnet-framework-july-2024-servicing-updates/
.NET 6、.NET 8 和 .NET Framework 的 2024 年 7 月更新已发布。
此版本修复了多个安全问题。
- CVE-2024-30105:System.Text.Json 中的 JsonSerializer.DeserializeAsyncEnumerable 中的拒绝服务漏洞
- CVE-2024-35264:Kestrel HTTP/3 数据损坏远程代码执行漏洞
- CVE-2024-38081:Visual Studio 安装程序中的权限提升漏洞
- 影响.NET 6.0、.NET Framework 2.0、3.0、3.5、4.6.2、4.7、4.7.1、4.8、4.8.1
- Microsoft 安全通报 CVE-2024-38081 | .NET 拒绝服务漏洞 · 问题 #313 · dotnet/announcements
- [CVE-2024-38095:解析 X.509 证书时出现 System.Formats.Asn1 拒绝服务漏洞](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024 -38095)
- 影响 .NET 6 和 .NET 8
- Microsoft 安全通报 CVE-2024-38095 | .NET 拒绝服务漏洞 · 问题 #312 · dotnet/announcements
.NET 9 预览 6 · dotnet/core · 讨论 #9392
https://github.com/dotnet/core/discussions/9392
.NET 9 预览版 6 已发布。
- BCL
- 改进的系统.数值
- 日志源生成器中的主要构造函数支持
- 改进的System.Text.Json
- 属性的"[GenerateRegex]"
Regex.EnumerateSplit
OrderedDictionary<TKey, TValue>
ReadOnlySet<T>
- 在库中的许多地方应用"允许引用结构"。
- 使用 Span 进行集合查找
- 更多基于Span的API
- Base64Url
- HttpClientFactory 中的默认 SocketsHttpHandler
- 在 Linux 上使用客户端证书时 TLS 恢复
System.Net.ServerSentEvents
- 引入公制仪表测量
- 运行
- ARM64代码生成
- 代码布局
- 循环优化
- 减少地址泄露
- AVX10v1 支持
- 硬件特定代码生成
- 浮点和SIMD操作的常量折叠
- SDK
- NuGetAudit传递依赖漏洞警告
dotnet nuget why
- MSBuild 构建检查
- C#
- 部分属性
- ASP.NET Core
- 静态网络资产指纹识别
- 改进了 SignalR 中的分布式跟踪
- Microsoft.AspNetCore.OpenAPI 的改进
- 当"[AllowAnonymous]"覆盖"[Authorize]"时分析器发出警告
- 跨帧分割巨大的 HTTP/2 标头
- .NET 9 预览 6 · 问题 #316 · dotnet/announcements
- 版本 17.11 预览版 3 | Visual Studio 2022 预览版发行说明
C# 13:探索最新的预览功能 - .NET 博客
https://devblogs.microsoft.com/dotnet/csharp-13-explore-preview-features/
计划在 C# 13 中引入的语言功能的说明。
- 扩展了参数收集的灵活性
- 锁定对象
- 索引运算符改进
\e
转义序列- 部分属性
- 方法组中自然类型的改进
- "async"方法和迭代器中的"ref"和"unsafe"
- 关于扩展类型的更新
- 扩展类型推迟到 C# 14
深色模式现已在 NuGet.org 上提供 - NuGet 博客
https://devblogs.microsoft.com/nuget/dark-mode-now-available-on-nuget-org/
NuGet.org 现在支持深色主题。
尊重系统主题并根据设置的主题更改网站主题。也可以从用户设置中明确设置。 Light 主题也已更新为类似 Fluent Design 的主题。
发布 NATS .NET v2.3.0 · nats-io/nats.net.v2
https://github.com/nats-io/nats.net.v2/releases/tag/v2.3.0
NATS.NET v2.3.0 已发布。
此版本支持 .NET Standard,使其可与 .NET Framework 和 Unity 一起使用。
文章、幻灯片等
显着减少自动化测试的执行时间!分析与优化实践
https://zenn.dev/thinkingsinc/articles/b52c47acd52913
介绍我们为缩短单元测试执行时间所做的事情。
使用 SIMD 指令更快地扫描 HTML:.NET/C# 版本 -- Daniel Lemire 的博客
https://lemire.me/blog/2024/07/05/scan-html-faster-with-simd-instructions-net-c-edition/
了解如何使用 SIMD 进行字符串扫描,就像 WebKit 和 Chromium 在 C#/.NET 中所做的那样。
本文包括与简单实现和 SearchValues 类的比较。
为什么以及如何在 .NET 中执行 GraphQL 查询 - .NET 博客
https://devblogs.microsoft.com/dotnet/why-and-how-to-execute-graph-ql-queries-in-dotnet/
了解如何使用 Strawberry Shake 请求 GraphQL 查询。
使用验证在 .NET 中进行快照测试 | .NET 工具博客
https://blog.jetbrains.com/dotnet/2024/07/11/snapshot-testing-in-net-with-verify/
关于使用验证进行快照测试(保存和验证输出值)。
在 JetBrains Rider 2024.1.4 中尝试全行代码完成 | .NET 工具博客
https://blog.jetbrains.com/dotnet/2024/07/10/full-line-code-completion-in-jetbrains-rider/
在 Rider 2024.1 中引入全行代码完成 (FLCC)。
全行代码完成是使用本地模型执行代码完成的功能。无需额外订阅。
添加对集合表达式的支持到您自己的类型:集合表达式的幕后 - 第 5 部分
除了系统提供的类型之外,使您自己的类型与集合表达式兼容的过程的说明。
[WPF] 从 ReactiveProperty 迁移到 R3、ObservableCollections - Qiita
https://qiita.com/monarc/items/1fecef8dda4622e835cb
关于从 ReactiveProperty 迁移到 R3 和 ObservableCollections。
使用 GitHub Copilot 提交说明揭秘历史 - Visual Studio 博客
引入了在 Visual Studio 上使用 GitHub Copilot 生成提交历史记录注释的功能。
C# 13 半自动属性 - NDepend 博客
https://blog.ndepend.com/c-13-semi-auto-properties/
正在考虑在 C# 13(或更高版本)中引入的半自动属性的描述。
ASP.NET Core 输入的 HTML 数据列表
https://khalidabuhakmeh.com/html-datalist-for-aspnet-core-inputs
为 HTML datalist 元素实现标签助手
使用 .NET 和 Consul 进行微服务中的服务发现
https://dev.to/milanjovanovictech/service-discovery-in-microservices-with-net-and-consul-4k81
关于使用 Consul 实现服务发现。
在.NET 中创建哈希
https://damienbod.com/2024/07/01/creating-hashes-in-net/
如何在 .NET 中计算哈希值。介绍 SHA512、Rfc2898DeriveBytes.Pbkdf2 和 ASP.NET Core Identity。
在自制的.NET CLI工具中添加制表符补全功能(第2部分) ~ 动态获取输入候选项 - Qiita
https://qiita.com/pierusan2010/items/e820ab9faf57aba0f2bd
如何使用命令行工具的选项卡完成功能动态检索和显示输入建议。
我想使用 Windows 命名管道在主机之间进行通信
https://zenn.dev/shusann01116/articles/71f9bfea17c050
了解如何使用 Windows 命名管道与远程主机进行通信。本文介绍了一个使用 ASP.NET Core 和 gRPC 的示例。
我想使用 VSTO 插件查看键盘操作 - Qiita
https://qiita.com/ikuzak/items/3706dee143e90d6c4131
如何监视 VSTO 外接程序中的键盘击键。文章介绍了一种使用键盘钩子的监控方法。
dotInsights | 2024 年 7 月
https://blog.jetbrains.com/dotnet/2024/07/05/dotinsights-july-2024/
JetBrains 2024 年 7 月 .NET 相关信息摘要
将 Renovate 设置为 Azure DevOps 管道以实现自动 .NET NuGet 包更新
https://nietras.com/2024/07/09/renovate-azure-devops/
了解如何使用 Renovate with Azure Pipelines 自动更新 NuGet 包。
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/.NET-Weekly
- 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周刊-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
- 10~50字左右的标题
- 对应文章或项目网址访问链接
- 200字以内的简介,如果太长会影响阅读体验
https://github.com/InCerryGit/.NET-Weekly
.NET性能优化交流群
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
- 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
- .NET框架底层原理的实现,如垃圾回收器、JIT等等
- 如何编写高性能的.NET代码,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。目前一群已满,现在开放二群。
如果提示已经达到200人,可以加我微信,我拉你进群: ls1075
另外也创建了QQ群,群号: 687779078,欢迎大家加入。