.NET周报【1月第4期 2023-01-28】
由于微信公众号排版问题,建议大家在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博客
在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已经发布。
该版本修复了几个问题,包括关闭多个窗口时的崩溃。
- 版本1.2.3 (1.2.230118.102) - Windows App SDK稳定通道发布说明 - Windows应用程序 sdk/stable-channel#version-123-12230118102)
【英文】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的幕后 - 第四部分
看看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博客
键盘快捷键,帮助你掌握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
Visual Studio 2022预览版谈到了Endpoints Explorer的可用性,它允许你看到你的ASP.NET Core项目的端点(Rider有类似的功能)。
https://twitter.com/hassanrezkhabib/status/1617064597105823748?s=12
深入理解
[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系统接口)的进展问题。
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET
- 其余内容来自 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,欢迎大家加入。