.NET周报【1月第4期 2023-01-28】
<p><strong>由于微信公众号排版问题,建议大家在PC端浏览。</strong></p><h2 id="国内文章">国内文章</h2>
<h3 id="c-很少人知道的科技">C# 很少人知道的科技</h3>
<p>https://blog.lindexi.com/post/C-很少人知道的科技.html</p>
<p>本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道这些科技,如果觉得我是在骗你,那么请看看本文的内容。</p>
<h3 id="c调用js库的方法">C#调用js库的方法</h3>
<p>https://www.cnblogs.com/s0611163/archive/2023/01/17/17056909.html</p>
<p>用.net6开发一个Winform程序,处理Excel文件,并把结果导出Excel文件。要用到两个算法,一是turf.js库的booleanPointInPolygon方法,判断经纬度坐标是否在区域内;二是经纬度纠偏算法,因为对方给的区域坐标集合有偏移,需要纠偏。这两个算法,网上找C#的实现,一是不好找;二是找来的不信任,我还要测试以确保没有问题。我之前做电子地图使用过turf.js库和js版本的纠偏算法,比较信任,确定没有问题。所以我就打算通过C#调用js库的方法,来实现数据处理。</p>
<h3 id="c中检查null的语法糖">C#中检查null的语法糖</h3>
<p>https://mp.weixin.qq.com/s/4HY1QKevswNy-0fR-frRgA</p>
<p>今天看到已经更新了devblogs,新增的C# 11的!!(用于检查null的语法)经过非常长的讨论,最后取消了。然后我又想起来null检查,这个可以说一说。</p>
<h3 id="2022年github上stars排名前十的net开源项目">2022年github上Stars排名前十的.NET开源项目</h3>
<p>https://mp.weixin.qq.com/s/cJEPtwBg8XJPBcbeF7Co-A</p>
<p>2023年已经开始了,在2022年从事.NET开发的你有什么收获呢?在过去的2022年里面,GitHub最受欢迎、Stars最多的项目分别是哪些呢?今天我们分享一下github上Stars排名前十的非官方.NET开源项目。</p>
<h3 id="net-简单高效避免oom的excel工具">.NET 简单、高效、避免OOM的Excel工具</h3>
<p>https://mp.weixin.qq.com/s/yEE1-z9_Hov_VaSYZqXRSQ</p>
<p>最近晚辈尝试做一个.NET简单、高效、避免OOM的Excel工具 MiniExcel。主要目前主流框架大多将资料全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。适合像是低规格 azure app service 或是读取大文件等情境。</p>
<h3 id="一款net开发的快速探测内网主机信息工具">一款.Net开发的快速探测内网主机信息工具</h3>
<p>https://mp.weixin.qq.com/s/2xUZH_RTqtxvcQRQzFjqMQ</p>
<p>今天给大家推荐一款.Net开发的快速探测内网主机信息工具SharpHostInfo。在进行内网渗透的时候,尤其是在域环境里,如果我们想知道其他内网主机信息,从而开展进一步渗透。那么SharpHostInfo正是这样的一个工具,体积较小,速度极快,支持NetBIOS、SMB和WMI服务快速探测。</p>
<h3 id="一个net开发的微信qqtim防撤回补丁">一个.NET开发的微信/QQ/TIM防撤回补丁</h3>
<p>https://mp.weixin.qq.com/s/6r6KqMFEebKPGGfL3UU3Bw</p>
<p>今天给大家推荐一个.NET开发的微信/QQ/TIM防撤回补丁RevokeMsgPatcher。RevokeMsgPatcher使用.NET 4.5框架开发。有18K+的star。软件还附带了一个微信多开功能!</p>
<h3 id="从-0-开始-mongodb-crud-及net7-中如何使用">从 0 开始 MongoDB CRUD 及.Net7 中如何使用</h3>
<p>https://mp.weixin.qq.com/s/cDuO_knqW75FX7D3SaKfNw</p>
<ul>
<li>前面几篇文章详细的介绍了,如何使用 Ubuntu 系统进行各种模式的集群部署.今天这里我们就开始正式的使用.</li>
<li>由于 MongoDB 操作很多,很多操作还很复杂,需要一些功底,所以这里先从数据库界的 Hello World(CRUD)开始.</li>
<li>本来想直接上来就讲操作的,才发现 Mongodb 的语法和一般数据库不一样,还得先介绍下查询条件.</li>
<li>查询条件常在更新和查询时候使用,当然使用聚合管道的时候也需要使用到.</li>
<li>这里先将支持的操作符分类列举出来.参考官方文档</li>
<li>https://www.mongodb.com/docs/rapid/reference/operator/query/</li>
</ul>
<h3 id="mongodb-数组及在net7-中进行操作">MongoDB 数组及在.NET7 中进行操作</h3>
<p>https://mp.weixin.qq.com/s/n4uD8UTWvwpvJdyi-hAfxA</p>
<ul>
<li>MongoDB 作为非常优秀的一款 NoSQL 文档型数据库,在日常的使用中我发现它不但可以替代传统的关系型数据库,而且性能非常优异,若是使用分片集群,更是离谱.</li>
<li>并且在我们的业务系统中实践多年也是没有任何问题.各种业务场景均可以解决.</li>
<li>而我们的数据往往是复杂多样的,常常一个实体中会包含 List, Array, 或者 IEnumerable<t> 类型的数据</t></li>
<li>这类数据在序列化为 JSON 后,都是以数组类型的格式.所以 MongoDB 中就会有很多数组类型的数据.</li>
<li>然而数组类型的数据在操作的时候又和普通的文档不一样.</li>
<li>所以就产生了今天的话题,如何给 MongoDB 的数组元素中新增数据,查询数组中的数据,以及更新和删除.</li>
<li>所以本文一共 4 个知识点.(其实还有一个知识点,使用 $unwind 对数组元素实现分页查询这种操作.)</li>
</ul>
<h3 id="mongodb-事务在net7-中的使用">MongoDB 事务在.NET7 中的使用</h3>
<p>https://mp.weixin.qq.com/s/t3ye73k7n2ffFnddbv8oPg</p>
<ul>
<li>
<p>背景</p>
</li>
<li>
<ul>
<li>在前边的文章中,我们详细的介绍了 MongoDB 的安装, CRUD, 聚合管道等操作.已经对 MongoDB 有了初步的了解.</li>
<li>本文的话就着重于在.NET 中如何使用 MongoDB 事务做一个简要的描述.</li>
</ul>
</li>
</ul>
<h3 id="uwp-一个技术上成功但商业上失败的框架之死一个现代的操作系统究竟应该提供什么">UWP 一个技术上成功但商业上失败的框架之死;一个现代的操作系统究竟应该提供什么?</h3>
<p>https://anduin.aiursoft.com/post/2023/1/3/uwp-why</p>
<p>2023年初,我习惯性的打开 UWP 的 Mail app,来收发一下日常 Email。但是,令我遗憾的是,它已经建议我尝试新版 Mail App 了。</p>
<h2 id="主题">主题</h2>
<h3 id="英文2022年的开发者生态系统c的关键趋势--net工具博客">【英文】2022年的开发者生态系统:C#的关键趋势 | .NET工具博客</h3>
<p>https://blog.jetbrains.com/dotnet/2023/01/26/the-developer-ecosystem-in-2022-key-trends-for-c/</p>
<p>JetBrains对2022年C#在开发者生态系统中的主要趋势的研究。</p>
<ul>
<li>C#的版本</li>
<li>发展的领域</li>
<li>使用的运行时版本</li>
<li>使用的IDE和编辑器</li>
<li>Visual Studio/Visual Studio Code中的插件</li>
<li>用于单元测试的框架</li>
<li>使用剖析器和诊断工具的频率</li>
</ul>
<h3 id="英文在visual-studio-for-mac-175中介绍git状态栏和测试改进---visual-studio博客">【英文】在Visual Studio for Mac 17.5中介绍Git状态栏和测试改进 - Visual Studio博客</h3>
<p>https://devblogs.microsoft.com/visualstudio/introducing-the-git-status-bar-and-testing-improvements-in-visual-studio-for-mac-17-5/</p>
<p>在Visual Studio for Mac 17.5 Preview 3中介绍Git状态栏和测试改进。</p>
<p>增加了诸如从状态栏检查和更改Git分支的功能。</p>
<h3 id="英文dotnetsqlclient-发布稳定版-v510">【英文】dotnet/SqlClient 发布稳定版 v5.1.0</h3>
<p>https://github.com/dotnet/SqlClient/releases/tag/v5.1.0</p>
<p>Microsoft.Data.SqlClient 5.1.0已经发布。</p>
<p>支持.NET 6,包括TimeOnly和DateOnly,支持SQL Server 2022的TDS8和TLS 1.3,支持ARM64 .NET框架和删除.NET Core 3.1支持。</p>
<h3 id="英文uno平台47---新项目模板性能改进等">【英文】Uno平台4.7 - 新项目模板,性能改进等</h3>
<p>https://platform.uno/blog/uno-platform-4-7-new-project-template-performance-improvements-and-more/</p>
<p>Uno平台4.7版已经发布。</p>
<p>这个版本包括一个新的项目模板,字体共享和WebAssembly、NativeAOT、Android等的性能改进。</p>
<h3 id="英文npgsqlnpgsql发布-v701">【英文】npgsql/npgsql发布 v7.0.1</h3>
<p>https://github.com/npgsql/npgsql/releases/tag/v7.0.1</p>
<p>Npgsql 7.0.1已经发布。</p>
<p>这个版本修复了几个错误,包括死锁。</p>
<h3 id="英文microsoftwindowsappsdk-发布-v123">【英文】microsoft/WindowsAppSDK 发布 v1.2.3</h3>
<p>https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.2.3</p>
<p>Windows App SDK 1.2.3已经发布。</p>
<p>该版本修复了几个问题,包括关闭多个窗口时的崩溃。</p>
<ul>
<li>版本1.2.3 (1.2.230118.102) - Windows App SDK稳定通道发布说明 - Windows应用程序 sdk/stable-channel#version-123-12230118102)</li>
</ul>
<h3 id="英文resharper-tools-and-rider-202232-bug-fix更新已经到来">【英文】ReSharper Tools and Rider 2022.3.2 BUG-fix更新已经到来!</h3>
<p>https://blog.jetbrains.com/dotnet/2023/01/27/resharper-rider-2022-3-2/</p>
<p>ReSharper和Rider 2022.3.2已经发布。</p>
<p>它们中的每一个都修复了一些问题,包括ASP.NET Core项目中的崩溃和错误。</p>
<h2 id="文章幻灯片等">文章、幻灯片等</h2>
<h3 id="日文用memorypack做你自己的版本管理--yucchiy的注释">【日文】用MemoryPack做你自己的版本管理 | Yucchiy的注释</h3>
<p>https://blog.yucchiy.com/2023/01/memorypack-custom-versioning/</p>
<p>如何在MemoryPack序列化过程中通过嵌入额外的信息来实现你自己的版本控制。</p>
<h3 id="英文在windows-forms应用程序中使用命令绑定来实现跨平台---net博客">【英文】在Windows Forms应用程序中使用命令绑定来实现跨平台 - .NET博客</h3>
<p>https://devblogs.microsoft.com/dotnet/winforms-cross-platform-dotnet-maui-command-binding/</p>
<p>关于在.NET 7中使用Windows Forms中启用的命令绑定来实现MVVM模式并尝试与.NET MAUI共享代码。</p>
<h3 id="英文为最小的api生成参数表达式最小的api的幕后---第四部分">【英文】为最小的API生成参数表达式:最小的API的幕后 - 第四部分</h3>
<p>https://andrewlock.net/behind-the-scenes-of-minimal-apis-4-generating-argument-expressions-for-minimal-apis/</p>
<p>看看Minimal APIs的幕后,包括构建处理程序参数表达树和处理可选参数。</p>
<h3 id="英文将wpf和winforms简单地整合到一个通用主机中">【英文】将WPF和WinForms简单地整合到一个通用主机中</h3>
<p>https://zenn.dev/nin_neko/articles/292f8a6f0d7ee4</p>
<p>如何在WPF和Windows Forms应用程序中使用通用主机。</p>
<h3 id="日文c-在visual-studio中创建你自己的警告并与你的团队分享它们">【日文】 在Visual Studio中创建你自己的警告,并与你的团队分享它们</h3>
<p>https://zenn.dev/tackme31/articles/2e57a1b1f592ff</p>
<p>如何开发你自己的Roslyn Analyser和CodeFix,以及如何在本地包中分发它们。</p>
<h3 id="英文5个net-maui功能用于构建伟大的桌面应用程序---net博客">【英文】5个.NET MAUI功能用于构建伟大的桌面应用程序 - .NET博客</h3>
<p>https://devblogs.microsoft.com/dotnet/5-dotnet-maui-desktop-features/</p>
<p>看一下桌面应用程序的五个.NET MAUI功能。</p>
<ul>
<li>多窗口</li>
<li>菜单栏</li>
<li>上下文菜单</li>
<li>工具提示</li>
<li>指针手势。</li>
</ul>
<h3 id="英文掌握visual-studio中git流程的键盘快捷键---visual-studio博客">【英文】掌握Visual Studio中Git流程的键盘快捷键 - Visual Studio博客</h3>
<p>https://devblogs.microsoft.com/visualstudio/keyboard-shortcuts-to-master-your-git-flow-in-visual-studio/</p>
<p>键盘快捷键,帮助你掌握Visual Studio中的Git流程。</p>
<h3 id="英文net-core和python之间的简单联合">【英文】.NET Core和Python之间的简单联合</h3>
<p>https://dev.to/devleader/a-simple-union-between-net-core-and-python-5949</p>
<p>简单介绍一下使用Pythonnet从.NET调用Python。</p>
<h3 id="英文aspnet-core中的基本身份验证--软件工程">【英文】ASP.NET Core中的基本身份验证 | 软件工程</h3>
<p>https://damienbod.com/2023/01/23/basic-authentication-in-asp-net-core/</p>
<p>如何使用idunno.Authentication.Basic包在ASP.NET Core应用程序中实现基本认证。</p>
<h3 id="英文用opentelemetry轻松追踪net应用程序---代码迷宫">【英文】用OpenTelemetry轻松追踪.NET应用程序 - 代码迷宫</h3>
<p>https://code-maze.com/tracing-dotnet-applications-opentelemetry/</p>
<p>了解如何使用OpenTelemetry来获取.NET应用程序的痕迹。</p>
<p>这篇文章还讨论了向SQL Server获取查询以及使用Jaeger显示查询的步骤。</p>
<h3 id="英文c-12特性-初级构造方法">【英文】C# 12特性: 初级构造方法</h3>
<p>https://steven-giesel.com/blogPost/a210c97e-fe68-45de-afa1-d053d75f6f7d</p>
<p>对C# 12中候选引入的主要构造函数的解释。</p>
<h3 id="英文ef核心调试第一部分">【英文】EF核心调试第一部分</h3>
<p>https://dev.to/karenpayneoregon/ef-core-debugging-part-1-512f</p>
<p>介绍在Entity Framework Core中开发过程中调试和记录的一些有用功能。</p>
<h3 id="英文静态库">【英文】静态库</h3>
<p>https://ericsink.com/native_aot/mul_cpp_win_static.html</p>
<p>关于在NativeAOT中作为静态库发布,以及其他出现和应该链接的库。</p>
<h3 id="英文开始对你的最小api进行集成测试">【英文】开始对你的最小API进行集成测试</h3>
<p>https://dev.to/this-is-learning/getting-started-with-integration-testing-for-your-minimal-api-3j0l</p>
<p>如何集成测试一个用最小的API实现的ASP.NET Core应用程序。</p>
<h3 id="英文史蒂夫-桑德森通过偷看适用于net-8的-blazor-united-使网络开发人员感到震惊--visual-studio杂志">【英文】史蒂夫-桑德森通过偷看适用于.NET 8的 "Blazor United "使网络开发人员感到震惊 -《Visual Studio》杂志</h3>
<p>https://visualstudiomagazine.com/articles/2023/01/26/blazor-united.aspx</p>
<p>关于Blazor United,正在为.NET 8中的Blazor开发一个原型。</p>
<p>Blazor United是一个原型,它在客户端的Razor Pages、Blazor Server和Blazor WebAssembly之间提供了无缝过渡。</p>
<ul>
<li>Blazor United prototype - YouTube</li>
</ul>
<h2 id="开源库资源库工具等">开源库、资源库、工具等。</h2>
<h3 id="数组的结构源生成器为net和unity中的高性能代码制作cpu-cache和simd友好的数据结构">数组的结构源生成器,为.NET和Unity中的高性能代码制作CPU Cache和SIMD友好的数据结构。</h3>
<p>https://github.com/Cysharp/StructureOfArraysGenerator</p>
<p>源码生成器,用于轻松处理一个名为Arrays结构的数据结构。</p>
<ul>
<li>neue cc - StructureOfArraysGenerator - 用于在C#中轻松使用SoA的源代码生成器</li>
</ul>
<h2 id="网站文件等">网站、文件等</h2>
<h3 id="推文">推文</h3>
<p><strong>谈到Visual Studio 2022预览版如何能像VSCode的REST客户端一样用.http文件做事情。</strong></p>
<p>https://twitter.com/hassanrezkhabib/status/1617734005306294272?s=12</p>
<p><img src="https://incerry-blog-imgs.oss-cn-hangzhou.aliyuncs.com/image-20230130083047532.png" alt="image-20230130083047532" loading="lazy"></p>
<hr>
<p><strong>Visual Studio 2022预览版谈到了Endpoints Explorer的可用性,它允许你看到你的ASP.NET Core项目的端点(Rider有类似的功能)。</strong></p>
<p>https://twitter.com/hassanrezkhabib/status/1617064597105823748?s=12</p>
<p><img src="https://incerry-blog-imgs.oss-cn-hangzhou.aliyuncs.com/image-20230130083149016.png" alt="image-20230130083149016" loading="lazy"></p>
<h2 id="深入理解">深入理解</h2>
<h3 id="api建议-非合作性的代码执行中止--issue-69622--dotnetruntime">: 非合作性的代码执行中止 · Issue #69622 · dotnet/runtime</h3>
<p>https://github.com/dotnet/runtime/issues/69622</p>
<p>自.NET 7以来,增加了一个名为<code>ControlledExecution.Run</code>的方法,以强制中断运行中的代码。</p>
<p>它打算在类似REPL的环境中使用,而不是在生产环境中使用,因为应用程序的内部状态可能得不到保证。</p>
<ul>
<li>
<p>ControlledExecution.Run(Action, CancellationToken) Method (System.Runtime) | Microsoft Learn</p>
</li>
<li>
<p>https://twitter.com/kookiz/status/1616428424104402945?s=12</p>
</li>
</ul>
<h3 id="wasi支持跟踪--issue-65895--dotnetruntime">WASI支持跟踪 · Issue #65895 · dotnet/runtime</h3>
<p>https://github.com/dotnet/runtime/issues/65895</p>
<p>关于在.NET中支持WASI(WebAssembly系统接口)的进展问题。</p>
<h2 id="版权声明">版权声明</h2>
<ul>
<li>国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET</li>
<li>其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET</li>
</ul>
<p><strong>由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。</strong></p>
<p>格式如下:</p>
<ul>
<li>10~50字左右的标题</li>
<li>对应文章或项目网址访问链接</li>
<li>200字以内的简介,如果太长会影响阅读体验</li>
</ul>
<p>https://github.com/InCerryGit/.NET-Weekly</p>
<h2 id="net性能优化交流群">.NET性能优化交流群</h2>
<p>相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:</p>
<ul>
<li>如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具</li>
<li>.NET框架底层原理的实现,如垃圾回收器、JIT等等</li>
<li>如何编写高性能的.NET代码,哪些地方存在性能陷阱</li>
</ul>
<p>希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。<strong>目前一群已满,现在开放二群。</strong></p>
<p>如果提示已经达到200人,可以加我微信,我拉你进群: <strong>ls1075</strong></p>
<p>另外也创建了<strong>QQ群</strong>,群号: 687779078,欢迎大家加入。</p><br><br>
来源:https://www.cnblogs.com/InCerry/p/dotnet_week_23_1_4.html
頁:
[1]