.NET周刊【6月第2期 2024-06-09】

net · 浏览次数 : 0

小编点评

本文主要介绍了一系列国内C#开源实用的工具类库,通过NuGet包管理器轻松集成。 1. **Z.ExtensionMethods**:免费C#工具类库,支持.NET Standard 2.0和.NET Framework 4.0,包含丰富的扩展方法示例,例如MD5哈希算法、解压GZip字节数组以及将泛型数组转换为DataTable。 2. **ReZero**:一款.NET中间件,通过界面操作生成API,适用于.NET6+ API项目,非.NET用户也可使用exe文件。功能包括表文档导出、在线建表、代码生成、NUGET包安装和注册等。 3. **使用Visual Studio分析.NET Dump**:讨论了如何使用Visual Studio 2022分析.NET Dump文件,以快速查找程序内存泄漏问题。 4. **C# .Net筑基-String字符串超全总结**:详细阐述了字符与字符编码、字符串基础的相关知识,并提供了C#和.NET处理数值类型的多种方法。 5. **.Net中间的使用WorkFlow Core创建工作审批流**:介绍了如何使用工作流框架Workflow Core实现工作流程,包括安装包、创建项目、添加步骤和配置启动。 6. **.NET程序自动更新组件**:博主实现了一个轻量级独立自动更新组件,适用于WPF/Winform/Windows服务等,包括版本检查、下载更新、解压与安装以及重启应用等功能。 7. **优秀的公司及框架**:分享了C#/.NET/.NET Core优秀项目和框架,如Fluent UI Blazor、Z.ExtensionMethods、Mapsui等。 8. **.NET筑基-深入解密小数内部存储的秘密**:解释了近实数存储的规律及其在C#中的展现方法,包括零基础写框架(2):故障排查和日志基础、使用Wesky.Net.Opentools库一行代码实现实体类类型转换为Json格式字符串等相关技术和知识点。

正文

国内文章

C#开源实用的工具类库,集成超过1000多种扩展方法

https://www.cnblogs.com/Can-daydayup/p/18230586

文章介绍了一个免费的C#工具类库Z.ExtensionMethods,可以通过NuGet包管理器轻松集成。该库支持.NET Standard 2.0和.NET Framework 4.0,包含丰富的扩展方法示例,如MD5哈希算法、解压GZip字节数组以及将泛型数组转换为DataTable。

.Net 中间件 - 新开源代码生成器 -ReZero

https://www.cnblogs.com/sunkaixuan/p/18228103

ReZero是一款.NET中间件,通过界面操作生成API,适用于.NET6+ API项目,非.NET用户也可使用exe文件。功能包括表文档导出、在线建表、代码生成、NUGET包安装和注册等。该工具使用自研模版引擎,易于集成与使用,支持创建和导入数据库表并导出文档。设置完成后,可通过URL启动。

使用Visual Studio分析.NET Dump

https://www.cnblogs.com/Can-daydayup/p/18232050

本文讨论了如何使用Visual Studio 2022分析.NET Dump文件,以快速查找程序内存泄漏问题。文章首先介绍了Dump文件的作用及其内容,然后通过编写一段死循环代码演示内存泄漏的情况。接着,文章详细讲解了如何查看程序运行情况并创建Dump文件。最后,使用Visual Studio分析Dump文件,定位内存泄漏位置,并提供了额外的Visual Studio编程效率提升技巧。此外,文章还推广了DotNetGuide技术社区以及其资源。

C#.Net筑基-String字符串超全总结 [深度好文]

https://www.cnblogs.com/anding/p/18221262

文章详细阐述了字符与字符编码、字符串基础的相关知识。介绍了字符Char及其在C#中的表现形式,说明了Unicode字符集及其各种平面的特点。解释了常见字符编码方案如UTF-8和UTF-16的区别。介绍了字符串的定义、不可变性以及常见操作方法,并提供了字符串常用API的详细说明。

C# .NET 6 使用WorkFlow Core 创建工作审批流

https://www.cnblogs.com/BFMC/p/18233359

工作流思想在60年代提出,80年代出现首批成功系统。90年代后至今许多版本出现,其主旨是提高工作效率。本文介绍如何通过工作流框架Workflow Core实现工作流程,包括安装包、创建项目、添加步骤和配置启动。举例展示了具体代码实现步骤。

.NET C# 程序自动更新组件

https://www.cnblogs.com/Bob-luo/p/18231510

博主实现了一个轻量级独立自动更新组件,适用于WPF/Winform/Windows服务。系统架构包括版本检查、下载更新、解压缩与安装以及重启应用。文章详细介绍了在WinForms应用中创建自动更新程序的步骤,包括解析命令行参数、关闭当前运行程序、下载更新包、解压更新包和重启新版本程序。提供了相应的代码示例以实现这些功能。

C#/.NET/.NET Core优秀项目和框架2024年5月简报

https://www.cnblogs.com/Can-daydayup/p/18236262

这篇文章定期分享C#/.NET/.NET Core优秀项目和框架,介绍了每个项目的特点、使用方式和源码地址。文章涵盖多个开源项目,如Fluent UI Blazor、Z.ExtensionMethods、Mapsui等,帮助开发者快速找到合适的开发工具。

分享下最近基于Avalonia UI和MAUI写跨平台时间管理工具的体验

https://www.cnblogs.com/hoyho/p/18229682

作者开始寻找支持自定义时间的时间管理软件,最终决定自己开发,并分享了开发过程。用C#和XAML编写,先选用MAUI框架,后转用Avalonia。主要遇到MAUI在macOS下的bug和局限。最终实现了一个能跨平台、满足自身需求的简易计时器。

微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor

https://www.cnblogs.com/Can-daydayup/p/18227674

本文介绍了Fluent UI Blazor,这是一个开源且免费的Blazor UI组件库。该库基于Blazor框架,旨在帮助开发人员构建现代化的Web应用程序。Blazor使用.NET框架和C#,允许开发者以C#编写单页应用和Web服务。文中还提供了项目源代码和在线文档链接。DotNetGuide技术社区为.NET开发者提供全面的学习资料和交流平台。

C#.Net筑基-深入解密小数内部存储的秘密

https://www.cnblogs.com/anding/p/18221160

本文解释了为什么0.1 + 0.2 不等于0.3,并介绍C#中的数值类型及其存储机制。文中详细讨论了浮点数的存储方式,以及其遵循的IEEE754标准。文章还介绍了decimal类型的特点,并强调其在金钱计算中的优势。通过多个代码示例,文章描述了C#中处理数值类型的方法。

零基础写框架(2):故障排查和日志基础

https://www.cnblogs.com/whuanle/p/18232144

本文介绍了.NET开发框架的设计,详细讲解了故障排查和日志记录的方法。作者总结了常用的IDE调试和.NET CLI工具的使用,如dotnet-dump和dotnet-trace。此外,还提到了System.Diagnostics接口和Microsoft.Diagnostics接口在性能探测中的重要性。最后,介绍了Microsoft.Extensions.Logging.Abstractions日志抽象接口及其常见实现方式,包括Serilog框架的使用方法。针对生产环境,文中建议使用Fluentd、Logstash和Elasticsearch等工具进行日志收集和可视化查询。

【WPF】Dispatcher 与消息循环

https://www.cnblogs.com/tcjiaan/p/18233254

本文讨论如何在新线程上创建并显示WPF窗口,强调UI线程必须是STA模式,跨线程访问UI对象需要进行封送。例子通过Button点击事件启动新线程创建新窗口,但没有消息循环导致异常。解决方法是使用Dispatcher类创建消息循环,确保线程能处理事件并保持窗口运行。dispatcher通过投放“帧”启动消息循环,关键方法是PushFrame,内部通过PushFrameImpl实现。

零基础写框架:从零设计一个模块化和自动服务注册框架

https://www.cnblogs.com/whuanle/p/18227954

本文介绍了一个名为Maomi.Core的模块化开发框架,适用于ASP.NET Core、控制台和WPF项目。文中详细说明了框架的模块化和自动服务注册功能,展示了如何创建和配置模块类、依赖注入以及在程序启动时初始化模块。框架通过实现IModule接口,使得服务可以自动注册并简化代码复杂度。

还在拼冗长的WhereIf吗?100行代码解放这个操作

https://www.cnblogs.com/fanshaoO/p/18233291

本文讨论了在数据过滤时如何简化代码,首先介绍了普通方法和改进的WhereIf方法,然后提出一种更高级的WhereObj方法。WhereObj通过自定义CompareAttribute和动态表达式库DynamicExpresso.Core实现,自动解析对象属性并进行数据过滤。这样可以清晰、优雅地处理复杂的查询条件。

Asp .Net Core 系列:详解鉴权(身份验证)以及实现 Cookie、JWT、自定义三种鉴权 (含源码解析)

https://www.cnblogs.com/vic-tory/p/18237065

鉴权是验证用户身份的过程,确认用户提供的凭据是否有效。在.NET Core中,鉴权由IAuthenticationService管理,通过注册的处理程序实现。传统鉴权依赖密码,现代则多使用数字签名认证。鉴权是授权的前提。基于Cookie的方式常见于.NET Core中,开发者可通过配置不同选项来实现。CookieAuthenticationHandler用于处理逻辑,开发者可设定Cookie的特性和事件来定制鉴权行为。

.NET程序对接 OpenTelemetry logs

https://www.cnblogs.com/kklldog/p/18227932/opentelemetry-logs

OpenTelemetry 是 CNCF 托管的开源项目,提供全面的观察性工具,包括度量、日志和追踪。它的主要优点是广泛的兼容性和灵活性,支持多种编程语言和后端服务。OpenTelemetry 定义了 Otlp 协议,减少了与特定三方组件的深度绑定,提高了兼容性。本文演示了在 .NET 项目中如何使用 OpenTelemetry 对接 Seq 进行日志记录,展示了配置和代码示例。

OpenAI正式发布第一个官方.NET版本库的测试版

https://www.cnblogs.com/shanyou/p/18238209

微软与OpenAI合作发布了官方OpenAI .NET库,目前为2.0.0-beta.3版本。该库支持.NET 6和.NET Standard 2.0,并包含对最新OpenAI功能和模型如GPT-4o的支持。该库的发布旨在提高.NET开发人员的开发体验,与其他编程语言库保持一致。官方库在GitHub上进行开发和支持,未来几个月将继续收集反馈改进库并发布稳定版本。此库补充了Python和TypeScript/JavaScript的官方库,社区开发人员也积极参与。

记一次 .NET某质量检测中心系统 崩溃分析

https://www.cnblogs.com/huangxincheng/p/18230369

本文讨论了一个.NET程序在Windows操作系统上因栈溢出导致IIS崩溃的案例。作者利用WinDbg分析崩溃的原因,发现问题出在iiscore.dll组件。详细列出了崩溃相关的错误信息和调用栈,并逐步分析栈溢出的根源。

Advanced .Net Debugging 9:平台互用性

https://www.cnblogs.com/PatrickLiu/p/18190864

这篇文章是《Advanced .Net Debugging》系列的第九篇,讨论了调试中互用性的问题,包括COM互用性和平台调用服务。文章详细描述了如何在NET 8.0环境中使用Windbg Preview和NTSD工具进行调试,并展示了一些示例代码。作者推荐使用Windbg Preview调试工具,强调其便利性和高效性。文章目录清晰,内容涵盖调试过程中的各种情况,并提供了源码部分供读者参考。

.NET 中使用 OpenTelemetry Traces 追踪应用程序

https://www.cnblogs.com/kklldog/p/18233768/opentelemetry-traces

文章讨论了在微服务和云原生环境中如何使用OpenTelemetry进行分布式追踪,提供了理论解释和代码示例。OpenTelemetry Traces通过记录和描述系统中操作的生命周期来实现调用链的可视化,提升监控和问题排查能力。文章通过一个用户登录接口演示了追踪HTTP请求和数据库操作的实现过程,涉及的技术包括ASP.NET Core、Npgsql和OpenTelemetry扩展。这些追踪数据可以通过指定的接收端进行导出和分析。

C#异步编程是怎么回事(番外)

https://www.cnblogs.com/ggtc/p/18229724

本文通过示例演示多线程与异步编程。示例程序让用户输入命令,主线程以“一发即忘”模式调用异步方法,输出带有线程ID的结果。分析了主线程与异步线程的上下文流转,并通过VS调试工具监视线程栈变化。解释了代码阻塞与线程阻塞两种现象。代码阻塞时,线程可能继续执行其他代码或在同步方法中阻塞。

一款.NET开源、免费、实用的多功能原神工具箱(改善桌面端玩家的游戏体验)

https://www.cnblogs.com/Can-daydayup/p/18237932

文章介绍了一款开源、免费且实用的.NET多功能原神工具箱——胡桃工具箱。该工具箱旨在改善桌面端玩家的游戏体验,支持多种语言且无需移动设备。介绍了系统要求、工具箱功能、下载地址及源码地址,并呼吁大家关注该项目。文末还提到DotNetGuide技术社区,提供学习资源、技术分享和咨询的平台。

.NET集成DeveloperSharp实现"高效分页"&"无主键分页"

https://www.cnblogs.com/digital-college/p/18227982

本文介绍了数据分页的两种解决方案:一种是读取数据库数据到内存后分页,另一种是在数据库中直接分页再输出数据。文章详细讲解了两种方案的实现方法和优劣,尤其侧重于第一种方案的优点和页面返回对象的属性。文章还通过NuGet引入包以及代码示例展示了使用方法。

记一次 .NET某工控视觉自动化系统 卡死分析

https://www.cnblogs.com/huangxincheng/p/18234656

本文通过WinDbg调试器分析一位学员在.NET视觉自动化开发中遇到的程序卡死问题,重点解析了调用栈及相关模块。作者借助第三方库PylonBase并深入解释了NtWaitForMultipleObjects方法的机制,从线程栈追溯问题根源,提供了详细的调试过程和思路。

赛博斗地主——使用大语言模型扮演Agent智能体玩牌类游戏。

https://www.cnblogs.com/gmmy/p/18233297

文章讨论了使用大模型智能体进行斗地主游戏的设计和实现。作者选择了国产大模型通义千问作为基础,通过阿里云平台获取接口。游戏设计包括随机发牌、确定地主、轮流出牌等。主要技术点在于C#编程实现的出牌合法性检测,包括手牌检测、牌型判断和竞赛逻辑。提供了核心代码段展示出牌类型的检测和玩牌的主要逻辑。

.NET Core Configuration 配置项知识点一网打尽!

https://www.cnblogs.com/goodluckily/p/18230478

文章示范了如何在控制台项目中使用多种配置提供程序,包括内存字典、命令行参数、环境变量和文件配置。这些示例展示通过不同方式添加和读取配置信息。

win10离线安装.net3.5失败的解决方案

https://www.cnblogs.com/magicMaQaQ/p/18230370

这篇文章介绍了离线安装.NET 3.5的方法,首先关闭防火墙及杀毒软件,通过系统版本查询并下载对应的Windows 10系统镜像文件。解压后找到sxs文件夹,利用dism工具进行离线安装。总结强调版本匹配的重要性。

.NET借助虚拟网卡实现一个简单异地组网工具

https://www.cnblogs.com/dotnet-org-cn/p/18239999

作者考虑到常用的远程连接工具不便,研究了基于tun2socks实现的自制工具,最终基于tun/tap手动实现了一个简易的版本,分享了核心代码。

内存优化:Boxing

https://www.cnblogs.com/xiaolipro/p/18235447

这篇文章主要谈论内存分析,特别是通过JetBrains的工具dotMemory来优化.NET应用程序的内存流量和性能问题。它详细介绍了装箱的定义、问题及其解决办法,并举例说明了如何使用dotMemory和Heap Allocations Viewer插件进行装箱检测和修复。此外,文章还探讨了动态集合调整大小的问题及其优化方法。通过这些最佳实践,该系列文章旨在帮助开发者提高.NET应用程序的内存使用效率,提高性能。

【译】通过出色的开发人员体验,将乐趣最大化,将痛苦最小化

https://www.cnblogs.com/MeteorSeed/p/18233857

开发者通过技术创新引领未来,但技术债务和上下文切换影响效率。Visual Studio 17.10 和 GitHub Copilot for Azure 提供更好的编码体验。.NET Aspire 支持云原生开发。使用智能应用实现个性化用户体验,新的 AI Toolkit for Visual Studio Code 使开发更简便。Azure App Platform 支持智能应用的构建和运行,并提供新的 API 管理功能。

IceRPC之依赖注入>快乐的RPC

https://www.cnblogs.com/xlgwr/p/18238532

本文介绍了IceRPC如何通过依赖注入(DI)构建调度管道,包括DI作为可选功能的设计原则、相关API的使用以及在Microsoft的DI容器中构建调度管道的具体操作。讨论了传统与DI构建的调度管道区别,说明了中间件和调度程序的通信方式和生命周期管理。

探索Semantic Plugins:开启大模型的技能之门

https://www.cnblogs.com/ruipeng/p/18229755

本章详细介绍了如何使用Semantic Kernel的插件,通过结合自定义和预定义的插件简化应用向智能化转型。介绍了插件的定义,强调插件通过语义方式和API交互,增强了功能。详细说明了Semantic Plugins和Native Plugins的定义方法,包括Prompts和config.json文件的结构和配置。

SemanticKernel:添加插件

https://www.cnblogs.com/mingupupu/p/18234563

Semantic Kernel是一个SDK,用于将大型语言模型集成到C#、Python和Java等编程语言中。为了解决大语言模型功能受限的问题,可以通过插件扩展其功能。文章展示了如何创建一个时间插件并在Kernel中使用,从而让AI回答更准确。

探索Native Plugins:开启大模型的技能之门

https://www.cnblogs.com/ruipeng/p/18234840

本文介绍了Semantic Kernel中Native Plugins原生函数插件的使用和定义。作者详细讲解了如何通过函数定义插件并给出具体的代码示例,包括根据类型创建插件、通过KernelFunction和Description特性定义函数插件、以及插件的注册和调用步骤。文中还介绍了通过对象创建插件的方法,并为实战应用提供了依赖注入的示例。该内容对于使用Semantic Kernel进行插件开发和提升OpenAI模型能力具有指导意义。

使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串

https://www.cnblogs.com/weskynet/p/18233902

文章介绍了Wesky.Net.OpenTools包1.0.10及以上版本的使用方法,尤其是实体类JSON模式生成器的核心代码。通过OpenJson属性,可以自定义实体类在JSON中的映射方式,支持多层嵌套和集合。文章提供了实际代码示例,并指出该功能可用于webapi接口快速测试和其他应用场景。

使用Wesky.Net.Opentools库,一行代码实现自动解析实体类summary注释信息(可用于数据实体文档的快速实现)

https://www.cnblogs.com/weskynet/p/18236082

通过引用Wesky.Net.OpenTools包,可以为实体类添加注释,生成Json数据字符串或实体类说明文档。反射解析获取类型属性及注释,生成演示文档。代码示例展示了如何生成和提取XML文档的属性摘要信息,及获取XML文档路径的方式。

gRPC入门学习之旅(十)

https://www.cnblogs.com/chillsrc/p/18238421

文章介绍了如何在Visual Studio中使用依赖注入方式调用gRPC服务,包括创建类、编写代码、添加控件、注入服务、启动和运行项目等步骤。

主题

MSTest 3.4 现已推出,提供 WinUI 支持和新分析器 - .NET 博客

https://devblogs.microsoft.com/dotnet/introducing-mstest-34/

MSTest 3.4 已发布。

此版本包括对 MSTest.Analyzer 的各种改进和错误修复、对 STA 线程的支持、对固定方法的超时支持、对 MSTest.Sdk 中的 Playwright 和 Aspire 的支持以及对 MSTest.Runner 中的 WinUI 的支持。

宣布推出 .NET 官方 OpenAI 库 - .NET 博客

https://devblogs.microsoft.com/dotnet/openai-dotnet-library/

OpenAI官方客户端第一个测试版2.0.0-beta.1已经发布。

该库涵盖了 OpenAI 的大部分 API,包括对 GPT-4o 和 IAsyncEnumerable 等的支持,并将继续通过最新功能进行改进。

文章还提到了之前的 OpenAI v1.x NuGet 包和其他包社区。

发布 v4.0.0 ·serilog/serilog

https://github.com/serilog/serilog/releases/tag/v4.0.0

Serilog 4.0.0 已发布。

此版本包括对轻松实现批处理的支持,以及实验性点名称捕获支持。

此外,从该版本开始,固定为 2.0.0.0 的程序集版本现在与包版本匹配,因此在 .NET Framework 中使用它时可能需要程序集重定向。

版本 1.6 实验 (1.6.0-experimental1) - Windows 应用 SDK 最新实验通道发行说明

https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/experimental-channel#version-16-experimental-160-experimental1

Windows App SDK 1.6.0-experimental1 已发布。

此版本增加了对 NativeAOT 的支持、对 TabView 的改进、新的 TitleBar 控件以及其他一些改进和新的 API。

介绍改进的 Visual Studio 资源浏览器 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/introducing-the-revamped-visual-studio-resource-explorer/

隆重推出 Visual Studio 2022 17.11 Preview 2 中引入的新资源浏览器。

新的资源浏览器支持解决方案范围的视图、深色模式以及搜索和过滤器等操作,使资源的使用更加轻松。

目前,不支持以 CSV 格式导入和导出。

文章、幻灯片等

关于主构造函数的思考:3 个优点和 5 个缺点

https://andrewlock.net/thoughts-about-primary-constructors-3-pros-and-5-cons/

介绍 C# 12 主构造函数的三个优点和五个陷阱和微妙之处。

ASP.NET MVC Core 中 DI 到 ActionFilterAttribute 的三种方法(+在操作过滤器中使用 HttpClient) - Qiita

https://qiita.com/jun1s/items/c000763f31e6a42bdd3b

如何在 ASP.NET Core MVC 中通过操作筛选器从 DI 容器中检索和使用服务。介绍“ServiceFilter”、“TypeFilter”和“IFilterFactory”。

改造我们的 Azure 市场图像 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/giving-our-visual-studio-azure-marketplace-images-a-makeover/

关于添加新的 Visual Studio 安装映像和弃用 Azure 市场中的产品/服务。

如何在 .NET 8 中从凭据管理器读取/写入

https://dev.to/issamboutissant/how-to-readwrite-from-credential-manager-in-net-8-1ag

了解如何读写 Windows 权利管理器。本文介绍了如何使用 Meziantou.Framework.Win32 包进行读写。

Rider 2024.2 路线图 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2024/06/05/rider-2024-2-roadmap/

Rider 2024.2 路线图。

  • UI
  • 用户体验
    • 改进的导航栏- 调试器
    • 任务视图和任务依赖图
  • 游戏开发
    • 改进了使用 Unity 的 IL2CPP 后端时的调试、改进的集合可视化工具和着色器变体
    • 虚幻引擎调试改进
    • GDScript 支持,包括 Godot 调试
  • 框架和技术
  • 全行代码完成

在 EF Core 8 中映射数组的初学者指南 - .NET 博客

https://devblogs.microsoft.com/dotnet/array-mapping-in-ef-core-8/

Entiy Framework Core 8 中数组映射的说明。

本文介绍了 PostgreSQL 数组类型、在其他数据库中使用 JSON 的数组、类型化数组以及它们的扩展方式。

亲身体验 Visual Studio 和 Azure:今年 8 月在 Microsoft 总部现场直播 - Visual Studio 博客!

https://devblogs.microsoft.com/visualstudio/get-hands-on-with-visual-studio-and-azure-live-at-microsoft-hq-this-august/

Visual Studio LIVE! 活动将于 8 月 5 日至 9 日在微软总部举行。

本文概述了 Visual Studio LIVE! 活动并提供了有关特别早鸟折扣的信息。

使用 SharpShell 在 .NET 8 中创建 Shell 扩展

https://dev.to/issamboutissantante/creating-shell-extensions-in-net-8-with-sharpshell-2ioe

如何使用 .NET 8 和“SharpShell”实现上下文菜单的 shell 扩展。

有关在 .NET 8 中的 Blazor 中使用 ErrorBoundary 进行错误处理的注意事项

https://zenn.dev/microsoft/articles/aspnetcore-blazor-dotnet8-errorboundary

如何在 .NET 8 中使用 Blazor 中的 ErrorBoundary 处理错误以及需要注意的事项。

状态机、电灯开关以及无状态和 .NET 8 的太空旅行

https://khalidabuhakmeh.com/state-machines-light-switches-and-space-travel-with-stateless-and-dotnet-8

介绍如何使用“Stateless”实现状态机。文章还提到了使用 UmlDotGraph 输出图形等内容。

了解 C# 中的 Exception.HResult 属性

https://blog.elmah.io/understanding-the-exception-hresult-property-in-c/

Exception 的 HResult 属性的说明。

本文解释了 HResult 的作用、使用什么规则来设置其值以及如何读取和研究它。

Microsoft Photos:从 UWP 迁移到 Windows App SDK

https://blogs.windows.com/windowsdeveloper/2024/06/03/microsoft-photos-migration-from-uwp-to-windows-app-sdk/

将 Windows Photo 应用从 UWP 迁移到 Windows App SDK 的案例研究。

文章解释了流程模型的变化、使用 WebView2 的能力、改进的可维护性以及从 ASTA 切换到 STA 和 AutoPlay 等技术挑战。

使用 C# 和 ONNX 运行时生成 AI (DirectML) 在本地运行 Phi-3 - Shibayan 其他

https://blog.shibayan.jp/entry/20240604/1717465930

说明如何使用 ONNX 运行时生成 AI (DirectML) 在本地环境中运行 Phi-3 模型。

为什么应该批量消息处理以及如何使用 .NET AsyncEnumerable - Event-Driven.io

https://event-driven.io/en/batching_async_enumerable/

如何在使用 AsyncEnumerable 时批量处理消息。

本文介绍了如何使用Open.ChannelExtensions库创建基于Channel的AsyncEnumerable。

原始与强类型字典键(feat.frozen collections 和 BenchmarkDotNet)

https://blog.codingmilitia.com/2024/04/13/primitive-vs-strongly-typed-dictionary-keys-feat-frozen-collections-and-benchmarkdotnet/

.NET 中的弱类型值和强类型值

https://yoh.dev/weakly-and-strongly-typed-values-in-dotnet

关于使用原语(弱类型)和包装它们的强类型的 FrozenDictionary 的参考性能。

关于发布 COM(C#、Excel) - Qiita

https://qiita.com/nnkanegon/items/1715b0da782e3dd713c9了解释放 COM 对象的问题以及如何调查因错过释放而导致的泄漏。

我只想要 Microsoft IME 的转换候选者 - Qiita

https://qiita.com/Fom/items/d9e421bae516be85d675

简要介绍通过 IME 获取转换候选项的库以及如何使用它。

使用别名任何类型重构代码 - .NET 博客

https://devblogs.microsoft.com/dotnet/refactor-your-code-using-alias-any-type/

文章:在 C# 12 中使用任何类型的别名进行重构。

在 .NET Aspire 项目中使用 Keycloak

https://nikiforovall.github.io/dotnet/keycloak/2024/06/02/aspire-support-for-keycloak.html

让我们用.NET搭建一个Playwright测试环境

https://zenn.dev/zead/articles/vscode_playwright

关于使用 Playwright 构建浏览器测试环境。

版权声明

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.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,欢迎大家加入。

image-20230703203249615

与.NET周刊【6月第2期 2024-06-09】相似的内容:

.NET周刊【6月第2期 2024-06-09】

国内文章 C#开源实用的工具类库,集成超过1000多种扩展方法 https://www.cnblogs.com/Can-daydayup/p/18230586 文章介绍了一个免费的C#工具类库Z.ExtensionMethods,可以通过NuGet包管理器轻松集成。该库支持.NET Standard

.NET周报 【6月第2期 2023-06-11】

## 国内文章 ### 如何计算一个实例占用多少内存? https://www.cnblogs.com/artech/p/size-calculation.html 我们都知道CPU和内存是程序最为重要的两类指标,那么有多少人真正想过这个问题:一个类型(值类型或者引用类型)的实例在内存中究竟占多少字

.NET周报 【2月第4期 2023-02-25】

国内文章 .NET微服务系统迁移至.NET6.0的故事 https://www.cnblogs.com/InCerry/p/microservice-migration-net-6.html 本次迁移涉及的是公司内部一个业务子系统,该系统是一个多样化的应用,支撑着公司的多个业务方向。目前,该系统由4

.NET周刊【6月第5期 2024-06-30】

国内文章 呼吁改正《上海市卫生健康信息技术应用创新白皮书》 C# 被认定为A 组件 的 错误认知 https://www.cnblogs.com/shanyou/p/18264292 近日,《上海市卫生健康“信息技术应用创新”白皮书》发布,提到医疗信创核心应用适配方法及公立医院信息系统。文章中对C#

.NET周刊【6月第4期 2024-06-23】

国内文章 C#.Net筑基-集合知识全解 https://www.cnblogs.com/anding/p/18229596 .Net中提供了数组、列表、字典等多种集合类型,分为泛型和非泛型集合。泛型集合具有更好的性能和类型安全性。集合的基础接口包括IEnumerator、IEnumerable、I

.NET周刊【6月第1期 2024-06-02】

国内文章 一文带你了解.NET能做什么? https://www.cnblogs.com/Can-daydayup/p/18214473 .NET是一个免费、开源、跨平台的开发平台框架,广泛应用于桌面、Web、移动、云服务、游戏、物联网、大数据和人工智能等领域开发。它支持C#、Visual Basi

.NET周报 【6月第1期 2023-06-04】

## 专题 - NanoFramework项目案例 如果有时间,我会在周报中加入一些专题和项目案例的分享,本周就是讨论.NET NanoFramework项目案例的专题,在讨论 NanoFramework 的典型案例之前,让我们先回顾一下 .NET 在嵌入式领域的历史。 2007年,.NET Mic

.NET周报 【6月第3期 2023-06-18】

## 国内文章 ### 揭秘 Task.Wait https://www.cnblogs.com/eventhorizon/p/17481757.html Task.Wait 是 Task 的一个实例方法,用于等待 Task 完成,如果 Task 未完成,会阻塞当前线程。**非必要情况下,不建议使用

.NET周报 【6月第4期 2023-06-25】

## 国内文章 ### 如何在long-running task中调用async方法 https://www.cnblogs.com/eventhorizon/p/17497359.html long-running task 是指那些长时间运行的任务,比如在一个 while True 中执行耗时较

.NET周报 【5月第1期 2023-05-06】

国内文章 聊一聊 Valgrind 监视非托管内存泄露和崩溃 https://www.cnblogs.com/huangxincheng/p/17374315.html、 只要是程序总会出现各种莫名其妙的问题,比如:非托管内存泄露,程序崩溃,在 Windows 平台上一般用微软自家的官方工具 App