.NET周报【12月第4期 2022-12-31】
祝大家新年快乐!
国内文章
『 再看.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 | 简单的电子签名服务
在Blazor中实施的电子签名服务。
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-12-31.md
- 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-12-31.md
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
- 10~50字左右的标题
- 对应文章或项目网址访问链接
- 200字以内的简介,如果太长会影响阅读体验
https://github.com/InCerryGit/.NET-Weekly
.NET性能优化交流群
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
- 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
- .NET框架底层原理的实现,如垃圾回收器、JIT等等
- 如何编写高性能的.NET代码,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。由于已经达到200人,可以加我微信,我拉你进群: ls1075