.NET周报【1月第4期 2023-01-28】

NET,周报 · 浏览次数 : 2433

小编点评

# .NET 性能优化交流群 **简介:** 我们创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于: * 如何找到.NET性能瓶颈 * 如使用APM、dotnet tools等工具 * .NET Framework底层原理的实现 * 如垃圾回收器、JIT等等如何编写高性能的.NET代码 *哪些地方存在性能陷阱希望能有更多志同道合朋友加入 分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。 **目标:** * 帮助所有开发人员找到.NET性能优化问题 * 分享一些经验和宝贵的性能分析优化经验 * 建立一个共同的学习交流平台 * 共同提升.NET 开发的效率和性能

正文

由于微信公众号排版问题,建议大家在PC端浏览。

国内文章

C# 很少人知道的科技

https://blog.lindexi.com/post/C-很少人知道的科技.html

本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道这些科技,如果觉得我是在骗你,那么请看看本文的内容。

C#调用js库的方法

https://www.cnblogs.com/s0611163/archive/2023/01/17/17056909.html

用.net6开发一个Winform程序,处理Excel文件,并把结果导出Excel文件。要用到两个算法,一是turf.js库的booleanPointInPolygon方法,判断经纬度坐标是否在区域内;二是经纬度纠偏算法,因为对方给的区域坐标集合有偏移,需要纠偏。这两个算法,网上找C#的实现,一是不好找;二是找来的不信任,我还要测试以确保没有问题。我之前做电子地图使用过turf.js库和js版本的纠偏算法,比较信任,确定没有问题。所以我就打算通过C#调用js库的方法,来实现数据处理。

C#中检查null的语法糖

https://mp.weixin.qq.com/s/4HY1QKevswNy-0fR-frRgA

今天看到已经更新了devblogs,新增的C# 11的!!(用于检查null的语法)经过非常长的讨论,最后取消了。然后我又想起来null检查,这个可以说一说。

2022年github上Stars排名前十的.NET开源项目

https://mp.weixin.qq.com/s/cJEPtwBg8XJPBcbeF7Co-A

2023年已经开始了,在2022年从事.NET开发的你有什么收获呢?在过去的2022年里面,GitHub最受欢迎、Stars最多的项目分别是哪些呢?今天我们分享一下github上Stars排名前十的非官方.NET开源项目。

.NET 简单、高效、避免OOM的Excel工具

https://mp.weixin.qq.com/s/yEE1-z9_Hov_VaSYZqXRSQ

最近晚辈尝试做一个.NET简单、高效、避免OOM的Excel工具 MiniExcel。主要目前主流框架大多将资料全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。适合像是低规格 azure app service 或是读取大文件等情境。

一款.Net开发的快速探测内网主机信息工具

https://mp.weixin.qq.com/s/2xUZH_RTqtxvcQRQzFjqMQ

今天给大家推荐一款.Net开发的快速探测内网主机信息工具SharpHostInfo。在进行内网渗透的时候,尤其是在域环境里,如果我们想知道其他内网主机信息,从而开展进一步渗透。那么SharpHostInfo正是这样的一个工具,体积较小,速度极快,支持NetBIOS、SMB和WMI服务快速探测。

一个.NET开发的微信/QQ/TIM防撤回补丁

https://mp.weixin.qq.com/s/6r6KqMFEebKPGGfL3UU3Bw

今天给大家推荐一个.NET开发的微信/QQ/TIM防撤回补丁RevokeMsgPatcher。RevokeMsgPatcher使用.NET 4.5框架开发。有18K+的star。软件还附带了一个微信多开功能!

从 0 开始 MongoDB CRUD 及.Net7 中如何使用

https://mp.weixin.qq.com/s/cDuO_knqW75FX7D3SaKfNw

  • 前面几篇文章详细的介绍了,如何使用 Ubuntu 系统进行各种模式的集群部署.今天这里我们就开始正式的使用.
  • 由于 MongoDB 操作很多,很多操作还很复杂,需要一些功底,所以这里先从数据库界的 Hello World(CRUD)开始.
  • 本来想直接上来就讲操作的,才发现 Mongodb 的语法和一般数据库不一样,还得先介绍下查询条件.
  • 查询条件常在更新和查询时候使用,当然使用聚合管道的时候也需要使用到.
  • 这里先将支持的操作符分类列举出来.参考官方文档
  • https://www.mongodb.com/docs/rapid/reference/operator/query/

MongoDB 数组及在.NET7 中进行操作

https://mp.weixin.qq.com/s/n4uD8UTWvwpvJdyi-hAfxA

  • MongoDB 作为非常优秀的一款 NoSQL 文档型数据库,在日常的使用中我发现它不但可以替代传统的关系型数据库,而且性能非常优异,若是使用分片集群,更是离谱.
  • 并且在我们的业务系统中实践多年也是没有任何问题.各种业务场景均可以解决.
  • 而我们的数据往往是复杂多样的,常常一个实体中会包含 List, Array, 或者 IEnumerable 类型的数据
  • 这类数据在序列化为 JSON 后,都是以数组类型的格式.所以 MongoDB 中就会有很多数组类型的数据.
  • 然而数组类型的数据在操作的时候又和普通的文档不一样.
  • 所以就产生了今天的话题,如何给 MongoDB 的数组元素中新增数据,查询数组中的数据,以及更新和删除.
  • 所以本文一共 4 个知识点.(其实还有一个知识点,使用 $unwind 对数组元素实现分页查询这种操作.)

MongoDB 事务在.NET7 中的使用

https://mp.weixin.qq.com/s/t3ye73k7n2ffFnddbv8oPg

  • 背景

    • 在前边的文章中,我们详细的介绍了 MongoDB 的安装, CRUD, 聚合管道等操作.已经对 MongoDB 有了初步的了解.
    • 本文的话就着重于在.NET 中如何使用 MongoDB 事务做一个简要的描述.

UWP 一个技术上成功但商业上失败的框架之死;一个现代的操作系统究竟应该提供什么?

https://anduin.aiursoft.com/post/2023/1/3/uwp-why

2023年初,我习惯性的打开 UWP 的 Mail app,来收发一下日常 Email。但是,令我遗憾的是,它已经建议我尝试新版 Mail App 了。

主题

【英文】2022年的开发者生态系统:C#的关键趋势 | .NET工具博客

https://blog.jetbrains.com/dotnet/2023/01/26/the-developer-ecosystem-in-2022-key-trends-for-c/

JetBrains对2022年C#在开发者生态系统中的主要趋势的研究。

  • C#的版本
  • 发展的领域
  • 使用的运行时版本
  • 使用的IDE和编辑器
  • Visual Studio/Visual Studio Code中的插件
  • 用于单元测试的框架
  • 使用剖析器和诊断工具的频率

【英文】在Visual Studio for Mac 17.5中介绍Git状态栏和测试改进 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/introducing-the-git-status-bar-and-testing-improvements-in-visual-studio-for-mac-17-5/

在Visual Studio for Mac 17.5 Preview 3中介绍Git状态栏和测试改进。

增加了诸如从状态栏检查和更改Git分支的功能。

【英文】dotnet/SqlClient 发布稳定版 v5.1.0

https://github.com/dotnet/SqlClient/releases/tag/v5.1.0

Microsoft.Data.SqlClient 5.1.0已经发布。

支持.NET 6,包括TimeOnly和DateOnly,支持SQL Server 2022的TDS8和TLS 1.3,支持ARM64 .NET框架和删除.NET Core 3.1支持。

【英文】Uno平台4.7 - 新项目模板,性能改进等

https://platform.uno/blog/uno-platform-4-7-new-project-template-performance-improvements-and-more/

Uno平台4.7版已经发布。

这个版本包括一个新的项目模板,字体共享和WebAssembly、NativeAOT、Android等的性能改进。

【英文】npgsql/npgsql发布 v7.0.1

https://github.com/npgsql/npgsql/releases/tag/v7.0.1

Npgsql 7.0.1已经发布。

这个版本修复了几个错误,包括死锁。

【英文】microsoft/WindowsAppSDK 发布 v1.2.3

https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.2.3

Windows App SDK 1.2.3已经发布。

该版本修复了几个问题,包括关闭多个窗口时的崩溃。

【英文】ReSharper Tools and Rider 2022.3.2 BUG-fix更新已经到来!

https://blog.jetbrains.com/dotnet/2023/01/27/resharper-rider-2022-3-2/

ReSharper和Rider 2022.3.2已经发布。

它们中的每一个都修复了一些问题,包括ASP.NET Core项目中的崩溃和错误。

文章、幻灯片等

【日文】用MemoryPack做你自己的版本管理 | Yucchiy的注释

https://blog.yucchiy.com/2023/01/memorypack-custom-versioning/

如何在MemoryPack序列化过程中通过嵌入额外的信息来实现你自己的版本控制。

【英文】在Windows Forms应用程序中使用命令绑定来实现跨平台 - .NET博客

https://devblogs.microsoft.com/dotnet/winforms-cross-platform-dotnet-maui-command-binding/

关于在.NET 7中使用Windows Forms中启用的命令绑定来实现MVVM模式并尝试与.NET MAUI共享代码。

【英文】为最小的API生成参数表达式:最小的API的幕后 - 第四部分

https://andrewlock.net/behind-the-scenes-of-minimal-apis-4-generating-argument-expressions-for-minimal-apis/

看看Minimal APIs的幕后,包括构建处理程序参数表达树和处理可选参数。

【英文】将WPF和WinForms简单地整合到一个通用主机中

https://zenn.dev/nin_neko/articles/292f8a6f0d7ee4

如何在WPF和Windows Forms应用程序中使用通用主机。

【日文】[C#] 在Visual Studio中创建你自己的警告,并与你的团队分享它们

https://zenn.dev/tackme31/articles/2e57a1b1f592ff

如何开发你自己的Roslyn Analyser和CodeFix,以及如何在本地包中分发它们。

【英文】5个.NET MAUI功能用于构建伟大的桌面应用程序 - .NET博客

https://devblogs.microsoft.com/dotnet/5-dotnet-maui-desktop-features/

看一下桌面应用程序的五个.NET MAUI功能。

  • 多窗口
  • 菜单栏
  • 上下文菜单
  • 工具提示
  • 指针手势。

【英文】掌握Visual Studio中Git流程的键盘快捷键 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/keyboard-shortcuts-to-master-your-git-flow-in-visual-studio/

键盘快捷键,帮助你掌握Visual Studio中的Git流程。

【英文】.NET Core和Python之间的简单联合

https://dev.to/devleader/a-simple-union-between-net-core-and-python-5949

简单介绍一下使用Pythonnet从.NET调用Python。

【英文】ASP.NET Core中的基本身份验证 | 软件工程

https://damienbod.com/2023/01/23/basic-authentication-in-asp-net-core/

如何使用idunno.Authentication.Basic包在ASP.NET Core应用程序中实现基本认证。

【英文】用OpenTelemetry轻松追踪.NET应用程序 - 代码迷宫

https://code-maze.com/tracing-dotnet-applications-opentelemetry/

了解如何使用OpenTelemetry来获取.NET应用程序的痕迹。

这篇文章还讨论了向SQL Server获取查询以及使用Jaeger显示查询的步骤。

【英文】C# 12特性: 初级构造方法

https://steven-giesel.com/blogPost/a210c97e-fe68-45de-afa1-d053d75f6f7d

对C# 12中候选引入的主要构造函数的解释。

【英文】EF核心调试第一部分

https://dev.to/karenpayneoregon/ef-core-debugging-part-1-512f

介绍在Entity Framework Core中开发过程中调试和记录的一些有用功能。

【英文】静态库

https://ericsink.com/native_aot/mul_cpp_win_static.html

关于在NativeAOT中作为静态库发布,以及其他出现和应该链接的库。

【英文】开始对你的最小API进行集成测试

https://dev.to/this-is-learning/getting-started-with-integration-testing-for-your-minimal-api-3j0l

如何集成测试一个用最小的API实现的ASP.NET Core应用程序。

【英文】史蒂夫-桑德森通过偷看适用于.NET 8的 "Blazor United "使网络开发人员感到震惊 -《Visual Studio》杂志

https://visualstudiomagazine.com/articles/2023/01/26/blazor-united.aspx

关于Blazor United,正在为.NET 8中的Blazor开发一个原型。

Blazor United是一个原型,它在客户端的Razor Pages、Blazor Server和Blazor WebAssembly之间提供了无缝过渡。

开源库、资源库、工具等。

数组的结构源生成器,为.NET和Unity中的高性能代码制作CPU Cache和SIMD友好的数据结构。

https://github.com/Cysharp/StructureOfArraysGenerator

源码生成器,用于轻松处理一个名为Arrays结构的数据结构。

网站、文件等

推文

谈到Visual Studio 2022预览版如何能像VSCode的REST客户端一样用.http文件做事情。

https://twitter.com/hassanrezkhabib/status/1617734005306294272?s=12

image-20230130083047532


Visual Studio 2022预览版谈到了Endpoints Explorer的可用性,它允许你看到你的ASP.NET Core项目的端点(Rider有类似的功能)。

https://twitter.com/hassanrezkhabib/status/1617064597105823748?s=12

image-20230130083149016

深入理解

[API建议]: 非合作性的代码执行中止 · Issue #69622 · dotnet/runtime

https://github.com/dotnet/runtime/issues/69622

自.NET 7以来,增加了一个名为ControlledExecution.Run的方法,以强制中断运行中的代码。

它打算在类似REPL的环境中使用,而不是在生产环境中使用,因为应用程序的内部状态可能得不到保证。

WASI支持跟踪 · Issue #65895 · dotnet/runtime

https://github.com/dotnet/runtime/issues/65895

关于在.NET中支持WASI(WebAssembly系统接口)的进展问题。

版权声明

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

与.NET周报【1月第4期 2023-01-28】相似的内容:

.NET周报【1月第4期 2023-01-28】

由于微信公众号排版问题,建议大家在PC端浏览。 国内文章 C# 很少人知道的科技 https://blog.lindexi.com/post/C-%E5%BE%88%E5%B0%91%E4%BA%BA%E7%9F%A5%E9%81%93%E7%9A%84%E7%A7%91%E6%8A%80.html

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

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

.NET周报 【3月第4期 2023-03-24】

国内文章 .NET应用系统的国际化-多语言翻译服务 https://www.cnblogs.com/tianqing/p/17232559.html 本文重点介绍了多语言翻译服务的设计和实现。文章描述了如何通过多语言翻译服务,将临时存储在数据库中的多语言词条,按支持的语言翻译成多语言词条。作者设计了

.NET周报 【4月第4期 2023-04-23】

国内文章 2023成都.NET线下技术沙龙圆满结束 https://www.cnblogs.com/edisonchou/p/2023_chengdu_dotnet_club_activity_review.html 2023年4月15日周六,由MASA技术团队和成都.NET俱乐部共同主办的2023

.NET周报 【5月第4期 2023-05-27】

## 国内文章 ### C#使用词嵌入向量与向量数据库为大语言模型(LLM)赋能长期记忆实现私域问答机器人落地之openai接口平替 https://www.cnblogs.com/gmmy/p/17430613.html 在上一篇[文章](https://www.cnblogs.com/gmmy/

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

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

.NET周报 【4月第1期 2023-04-02】

国内文章 探索 SK 示例 -- GitHub 存储库中的机器人 https://www.cnblogs.com/shanyou/p/17280627.html 微软 3月22日 一篇文章“Semantic-kernel 嵌入和记忆:使用聊天UI探索GitHub Repos”[1] ,文章中进行了展

.NET周报 【4月第2期 2023-04-08】

国内文章 LRU缓存替换策略及C#实现 https://www.cnblogs.com/eventhorizon/p/17290125.html 这篇文章讲述了缓存替换策略,特别是LRU算法。LRU算法基于这样一个假设:如果数据最近被访问过,那么将来被访问的几率也更高。通常我们会用双向链表来实现这个

.NET周报 【4月第3期 2023-04-15】

国内文章 Semantic Kernel 入门系列:📅 Planner 规划器 https://www.cnblogs.com/xbotter/p/semantic_kernel_introduction_planner.html 本文介绍了Semantic Kernel的一个核心能力,即实现目标

.NET周报 【4月第5期 2023-04-30】

国内文章 基于 Github 平台的 .NET 开源项目模板. 嘎嘎实用! https://www.cnblogs.com/NMSLanX/p/17326728.html 大家好,为了使开源项目的维护和管理更方便一些,出于个人需求写了一款开源项目的模板,该模板基于 Github 平台,并使用 .NE