.NET周报【12月第4期 2022-12-31】

时间:2023-01-02 07:11:18

祝大家新年快乐!

国内文章

『 再看.NET7』数值类型

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

在C#中,有int16,用short来定义;有int32,用int定义;用int64,用long来定义。在.NET7中,添加了int128,和unint128,位数更大的整型。

如何使用 EF Core 7 批量删除数据

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

在 EF Core 7 中,我们可以使用批量操作来删除多条数据。这种方式与之前的版本有所不同,本文将对比 EFCore 7 和之前版本批量删除数据的不同方式。

如何在路由绑定中使用 IParsable

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

IParsable 是 .Net 7 中新增的接口,它可以将字符串转换为对应的实体。在 Controller 的 Route 绑定中可以使用 IParsable 来绑定复杂的实体。

【命名规范】.NET中的枚举类型,要以Enum结尾吗?

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

这个话题源于公司《.NET技术规范》中的一条:【强制】枚举声明应以Enum结尾。

一个基于.Net开发的Windows截屏录制工具

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

今天给大家推荐一个是基于.Net开发的,屏幕截图、录屏、UI漂亮、功能强大的截屏录制工具。

学习 .NET高级调试 个人推荐的10本书

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

昨天训练营有朋友让我推荐学习 .NET高级调试 的参考书,这里整理了我个人推荐的 10 本书。

记一次.NET 某安全生产系统 CPU爆高分析

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

今天是????的第四天,头终于不巨疼了,写文章已经没什么问题,赶紧爬起来写。

这个月初有位朋友找到我,说他的程序出现了CPU爆高,让我帮忙看下怎么回事,简单分析了下有两点比较有意思。

.NET Conf China 2022 圆满落幕 明年再见!

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

时光飞快,还记得本月的第一个周末吗?12月3日-12月4日,相信对于 .NET 开发者来说一定记忆犹新!.NET Conf China 2022 于12月4日圆满落幕。视频回放链接: https://bbs.csdn.net/forums/DotNET?typeId=20680

2022年底C# 解压zip文件遇到的一个bug

https://jhrs.com/2022/46060.html

最近在排查一个上传功能时,客户端上传的是zip文件,到服务器端后使用C# 解压zip文件的代码将上传文件解压后验证是否是允许上传的文件类型,并且要验证乱改文件后缀啊,文件头什么的都要走一遭,结果解压zip文件时就出妖蛾子了。

WPFMediaKit 播放 rtsp 视频流

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

本文介绍了如何使用WPFMediaKit 播放 rtsp 视频流。

.Net MAUI 安卓使用极光推送JPush(更新4.8.5)

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

本文介绍了如何在.Net MAUI 安卓使用极光推送JPush。

VS 2022 开发 STM32 单片机 - 点亮LED灯

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

本文介绍了如何使用VS 2022开发STM32单片机程序。

定制.NET 6.0的Middleware中间件

https://www.cnblogs.com/jackyfei/archive/2022/12/19/16985708.html

在本文中,我们将学习中间件,以及如何使用它进一步定制应用程序。我们将快速学习中间件的基础知识,然后探讨如何使用它做的一些特殊事情。
本文涵盖的主题包括:

  • 中间件简介
  • 编写自定义中间件
  • 中间件的潜力
  • 如何使用中间件

主题

【英文】BenchmarkDotNet 发布 0.13.3 版本 | BenchmarkDotNet

https://benchmarkdotnet.org/changelog/v0.13.3.html

BenchmarkDotNet 0.13.3已经发布了。

这个版本增加了对平台技术的支持,如ARM64反汇编程序、对.NET 8的早期支持、对.NET 6/7的Mono VM支持、armv6和ppc64le支持。
在WASM、NativeAOT和Android中还进行了其他各种改进,并增加了ExceptionDiagnoser和PerfCollectProfiler等功能。

文章、幻灯片

【英文】使用Polyglot Notebooks练习算法 - 第一部分(安装)

https://dev.to/kkoziarski/practicing-algorithms-using-polyglot-notebooks-part-1-setup-1fp3

一系列关于使用Polyglot Notebooks(.NET互动)学习算法的文章。 它介绍了设置、帮助者等。

【日文】JSON和其他内容检查工具 | UFCPP博客

https://ufcpp.net/blog/2022/12/binarytool/

关于在Blazor WebAssembly中创建工具以解析、显示和重新序列化数据的文章,如MessagePack和JSON。

【英文】如何在.NET 7中使用Change Tokens?

https://medium.com/@gokerakce/how-to-use-change-tokens-in-net-7-3db9cc43910f

文章展示了如何使用IOptionsMonitor中使用的ChangeTokens和其它内容。

【日文】用Semgrep对抗SQL注入 #1

https://zenn.dev/masakura/articles/3e65ba04401256

文章介绍了如何用静态代码分析工具Semgrep分析C#代码,以检测SQL注入。
这篇文章展示了如何用Dapper做到这一点,以及如何处理一些C#代码模式。

【日文】验证UDP中数据包的丢失或替换 - Qiita

https://qiita.com/diontools/items/822772f8f2d54be8260a

一篇关于验证通过UDP发送和接收时发生掉线和重新排序的程度的文章。

【英文、日文】重磅消息:将Kestrel+YARP引入Azure App Services - Qiita

https://devblogs.microsoft.com/dotnet/bringing-kestrel-and-yarp-to-azure-app-services/

https://qiita.com/nt-7/items/786ec694b17d8816c2c9

一篇翻译和介绍关于Azure App Service前端迁移到Kestrel + YARP的官方博文。

【英文】NanoFramework的乐趣,在ESP32上运行.Net C#

https://sandervandevelde.wordpress.com/2022/12/15/fun-with-nanoframework-running-net-charp-on-esp32/

文章解释了如何使用.NET nanoFramework在ESP32上运行C#代码。

文章还介绍了如何播放MP3和连接到Wi-Fi。

【日文】创建一个可以从Visual Studio使用的项目模板 - Qiita

https://qiita.com/kamikawa_m/items/75c337f101d9d2f6080e

一篇介绍创建可在Visual Studio中使用的项目模板的步骤的文章。

【日文】探索ASP.NET Core身份的可扩展性 - Qiita

https://qiita.com/MugeSo/items/7ada1f2713b8917970c3

一篇文章,详细介绍了扩展ASP.NET核心身份的接口,包括用户数据和密码相关细节。

【英文】2022年热门.NET博客文章 - .NET博客

https://devblogs.microsoft.com/dotnet/top-dotnet-blog-posts-of-2022/

一篇重申2022年.NET博客上的热门帖子的文章。

【英文】2022年的热门.NET视频和直播 - .NET博客

https://devblogs.microsoft.com/dotnet/top-dotnet-videos-live-streams-of-2022/

.NET团队撰写的一篇关于2022年*视频和直播的文章。

【日文】从C#源代码中只提取差异方法 - Qiita

https://qiita.com/myosotis/items/fa48b8aa940f53405218

一篇关于使用Roslyn分析源代码的文章,并在两个源代码之间进行方法比较,试图提取出增删和变化。

【日文】ASP.NET Core 7.0 让我们使用自定义元素,这是Blazor的一个新功能。

https://zenn.dev/okazuki/articles/blazor-customtag

关于如何使用自定义元素的文章,这是Blazor在.NET 7中支持的一种机制,允许组件像普通的HTML元素一样使用。

【英文】为你的单元测试提供更好的断言

https://www.johansmarius.dev/2022/12/better-assertions-for-your-unit-tests.html?m=1

介绍FluentAssertions的文章,它以Fluent的形式描述单元测试中的断言。

【英文】Keycloak作为.NET的授权服务器

https://dev.to/nikiforovall/keycloak-as-authorization-server-in-net-91m

关于在ASP.NET Core中使用Keycloak作为授权服务器的文章。

【英文】利用英特尔oneDAL加速ML.NET训练

https://devblogs.microsoft.com/dotnet/accelerate-ml-net-training-with-intel-onedal/

宣布英特尔oneDAL后端现在可以在ML.NET 3.0的预览版中使用。

【日文】[VB.NET]扩展编译器ModVB介绍(安装) - Qiita

https://qiita.com/yaju/items/2c154a939b9896c855e2

一篇介绍如何安装ModVB--一个扩展VB.NET的编译器的文章。

【日文】我想从Blazor调用JavaScript类的构造函数

https://zenn.dev/okazuki/articles/call-js-constructor-from-blazor

关于如何从Blazor的C#端创建JavaScript类的实例的文章。
在.NET 8中你可以直接创建实例,但在.NET 7中你需要采取调用函数的形式来创建。

【日文】[NET MAUI ]如何处理EntityFrameworkCore迁移失败的问题。

https://zenn.dev/tomori_k/articles/9cb07c31a1fdca

导致.NET MAUI项目不能进行Entity Framework Core迁移,以及如何处理这个问题。

【日文】[C#] 备忘录提示:接收UDP组播(同一主机支持发送和接收) - Qiita

https://qiita.com/Yothuba3/items/ae6d7822b6b3cfe63be7

关于如何接收UDP组播的文章,包括在同一主机上发送和接收。

【日文】[C#]Dapper备忘录 [基础知识] - Qiita

https://qiita.com/YuMo_tea/items/ee4182260a0e3216237e

一篇介绍Dapper的基本方法和如何使用它们的文章。

【日文】[C#] 在C#中使用腾讯TRTC SDK! - Qiita

https://qiita.com/SoeAtsu/items/6085c647b2c61feed5cb

一篇关于使用腾讯实时通信的SDK将视频通话集成到WPF应用程序的文章。

【日文】按类型限制流量(System.Threading.RateLimiting) - Qiita

https://qiita.com/skitoy4321/items/265111dd440041e66e5a

解释PartitionedRateLimiter类的文章,用于在.NET 7中引入的速率限制API中按URL和资源等类型进行流量限制。

【日文】Ix.NET的MaxBy、MaxByWithTies,因为这个名字与一个从.NET 6开始添加的标准方法相冲突 - Qiita

https://qiita.com/RyotaMurohoshi/items/9072987415bcab80b703

关于Ix.NET中同名方法的变化的文章,由于MaxBy和其他在.NET 6中加入LINQ的影响。

【日文】不能使用GetConnectionString来获取在Azure App Service上部署的ASP.NET Core应用程序中设置的连接字符串?| @jsakamoto

https://devadjust.exblog.jp/29454749/

在Azure App Service(配置中的连接字符串)的连接字符串设置中不能正确获得只有PostgreSQL的问题。

在App Service中设置的连接字符串对每个数据库类型都有一个前缀,M.E.Configuration在从环境变量中读取时考虑到了它们,但有一个问题是只有PostgreSQL没有被考虑到。

【日文】玩转GeneratedRegex - Qiita

https://qiita.com/kurema/items/068385ba2f8bbe3858e1

文章解释了GeneratedRegex,它是.NET 7中引入的正则表达式处理的预源生成器。

这篇文章涉及到使用、实施和性能比较。

【英文】Hybrid Blazor + NativeAOT = ❤️

https://codevision.medium.com/hybrid-blazor-nativeaot-️-a6c93de6ede3

关于如何在Windows Forms的WebView2中显示Blazor Hybrid并与NativeAOT合作的文章。

【日文】NET Conf 2022回顾活动 我在福冈发表了关于.NET 7时代的Windows应用开发的演讲

https://blog.shibayan.jp/entry/20221226/1671991195

NET Conf 2022回顾活动 在福冈举行的.NET 7时代的Windows应用开发会议的回顾和一篇关于幻灯片的文章。

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

Kareadita/Kavita: Kavita是一个快速、功能丰富、跨平台的阅读服务器。它以漫画为重点,目标是成为满足你所有阅读需求的全面解决方案。设置你自己的服务器,与你的朋友和家人分享你的阅读收藏。

https://github.com/Kareadita/Kavita

基于网络的图书阅读应用。漫画阅读器、可以处理ZIP文件,等等。

mkaring/ConfuserEx: 一个开源的、免费的.NET应用程序的保护器

https://github.com/mkaring/ConfuserEx

用于混淆.NET应用程序的工具。

以命令行工具和MSBuild任务的形式提供。

MrDave1999/dotenv.core: dotenv.core是一个用于在.NET Core中读取和解析.env文件的类库。

https://github.com/MrDave1999/dotenv.core?hss_channel=tw-2384354214

一个用于处理.env(描述环境变量的文件)的库。

网站、文件等。

SoySign | 简单的电子签名服务

https://soysign.com/

在Blazor中实施的电子签名服务。

版权声明

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。

格式如下:

  • 10~50字左右的标题
  • 对应文章或项目网址访问链接
  • 200字以内的简介,如果太长会影响阅读体验

https://github.com/InCerryGit/.NET-Weekly

.NET性能优化交流群

相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:

  • 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
  • .NET框架底层原理的实现,如垃圾回收器、JIT等等
  • 如何编写高性能的.NET代码,哪些地方存在性能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。由于已经达到200人,可以加我微信,我拉你进群: ls1075