这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐!
译者注:这是Michal Strehovský大佬的一篇文章,他目前在微软.NET Runtime团队工作,主要是负责.NET NativeAOT功能的开发。我在前几天看到这篇文章,非常喜欢,虽然它的内容稍微有点过时(还是使用的.NET Core 3.0),不过其中的一些编程技巧和思维方式很受用,特意找到Michal大佬要到了授权,翻译给大家看。
https://www.cnblogs.com/newton/p/17033789.html
本文介绍了如何.NET中gRPC的入门和代码实践。
https://www.cnblogs.com/lindexi/archive/2023/01/09/17038319.html
本文属于 dotnet 代码优化系列博客。相信大家都对圈复杂度这个概念很是熟悉,本文来和大家聊聊逻辑的圈复杂度。代码优化里面,一个关注的重点在于代码的逻辑复杂度。一段代码的逻辑复杂度越高,那么维护起来的难度也就越大。衡量代码的逻辑复杂度的一个维度是通过逻辑圈复杂度进行衡量。本文将告诉大家如何判断代码的逻辑圈复杂度以及一些降低圈复杂度的套路,让大家了解如何写出更好维护的代码。
https://mp.weixin.qq.com/s/1cevbNaCjJxGC3jT1OEcMA
如标题所示,经过Linux基金会的统计,dotnet位于Top 30的开源项目。
这是基于.NET Core 3.1、React开发的开源项目,支持账号密码、手机短信、第三方登录,采用前后端分离架构的单点登录系统。
https://mp.weixin.qq.com/s/oUamKudNlELUIIIfT49OEw
大家好,我是宝弟!今天给大家分享一款完全国产的基于C#语言开发的跨平台的文本解析引擎(模板引擎)JNTemplate,它能生成任何基于文本的内容,包括且不限于html,xml,css等,让前端展示与后端代码逻辑分离。同时,它也提供了一个在WebForm与Razor之外的选择!
https://mp.weixin.qq.com/s/KhK-uvMFrL8qNmk-26r6cQ
Blazor WebAssembly初次访问需要加载很多dll,体积较大,因此第一次加载比较慢。针对此问题Microsoft提供了优化方案:压缩 https://learn.microsoft.com/zh-cn/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-6.0#compression-1
https://mp.weixin.qq.com/s/y-s-_G7tbNhT0xRG8cl1Bg
本文介绍了如何.Net6中实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图,另外还有遇到的一些问题。
https://mp.weixin.qq.com/s/H8ysc3_DOfl5zUoeFDVOgw
依赖管理是 NuGet 的核心功能。Nuget管理单个项目的依赖关系很容易,只需要每个项目维护自己的Nuget依赖与对应版本。在您管理许多不同项目的公共依赖项的情况下,您可以利用 NuGet 的中央包管理功能从一个位置轻松完成所有这些工作。
https://mp.weixin.qq.com/s/IWTp0u43uHNf4Cz2riXaoQ
2023年已经开始了,在2022年从事.NET开发的你有什么收获呢?在过去的2022年里面,GitHub最受欢迎、Stars最多的项目分别是哪些呢?今天我们分享一下github上Stars排名前十的非官方.NET开源项目。
https://mp.weixin.qq.com/s/Zedkai4YpSEmT9BKUTe0qg
在之前的一篇文章《看我是如何用C#编写一个小于8KB的贪吃蛇游戏》中,介绍了在.NET Core 3.0的环境下如何将贪吃蛇游戏降低到8KB。不过也有很多小伙伴提出了一些疑问和看法,本文一一为大家解答这些问题。
https://devblogs.microsoft.com/dotnet/january-2023-updates/
.NET 7.0.2和.NET 6.0.13已经发布。
该版本修复了.NET 6中的一个DoS漏洞。 该漏洞允许通过向已发布的端点发送恶意请求,造成堆栈溢出,从而进行拒绝服务攻击。
https://blog.jetbrains.com/dotnet/2023/01/19/resharper-2023-1-eap-starts/
ReSharper 2023.1的EAP(早期访问计划)已经开始。
ReSharper 2023.1 EAP 1包括代码检查方面的改进,如对#region
的快速修复,将Span.SequenceEquel
重写为is
,以及改进的C++支持。
https://blog.jetbrains.com/dotnet/2023/01/19/rider-2023-1-eap-start/
Rider 2023.1的EAP(早期访问计划)已经开始。
Rider 2023.1 EAP 1包括Unity的API弹出式文档链接,在虚幻引擎中创建新类的重新实现的UI,对Docker的快速模式支持,对#region
和Span
的快速修复。 SequenceEquel
重写为is
,代码检查的改进,以及主工具栏的UI修复。
https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-5-preview-3-is-here/
Visual Studio 2022 17.5 Preview 3现已发布。
https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-810/
.NET社区工具包8.1已经发布。
ObservableProperty
的自定义属性,MVVM工具包分析器,MVVM工具包源生成器优化,IObservable<T>
信使扩展,.NET 7和C# 11支持。
https://github.com/MinBZK/woo-besluit-broncode-digid-app
一个名为DigiD的荷兰应用程序已被作为开放源代码发布。 (这是一个全国性的应用,似乎是政府透明度维护活动的一部分)。
该应用程序有1500万活跃用户,是用Xamarin.Forms制作的。
https://github.com/dotnet/maui/releases/tag/7.0.58
.NET MAUI 7.0.58服务版本2已经发布。
该版本修复了各种错误并更新了Windows App SDK。
https://devblogs.microsoft.com/dotnet/dotnet-framework-january-2023-update/
.NET框架的2023年1月累积更新预览已经发布。
该版本修复了几个WPF的错误和Socket的一个罕见问题。
https://devblogs.microsoft.com/visualstudio/visual-studio-spell-checker-preview-now-available/
对Visual Studio预览版中现在可用的拼写检查器的介绍。
这篇文章介绍了如何使用拼写检查器,它检查哪些模式以及如何定制它。
https://ufcpp.net/blog/2023/1/list-pattern-enumerable/
C# 12 IEnumerable
的候选列表模式匹配。
https://ufcpp.net/blog/2023/1/semi-auto-property
本文介绍了C#12候选半自动属性(只有后援字段是自动生成的)。
它还解释了初始化器和它们被覆盖时的行为。
https://dev.to/satyakarki/beginners-guide-to-get-started-with-smart-contract-in-c-3c7e
介绍使用Stratis实现智能合约,这是一个允许用C#实现智能合约的平台。
https://ericsink.com/native_aot/index.html
该系列文章涉及关于Native AOT的解释和示例代码。
https://pvs-studio.com/en/blog/posts/csharp/1020/
由PVS-Studio开发人员发现并报告的2022年开源项目中发现的十大错误汇编。
https://blog.jetbrains.com/dotnet/2023/01/17/securing-sensitive-information-with-net-user-secrets/
介绍如何使用.NET UserSecrets在本地存储敏感信息并从你的应用程序中使用它。
使用JetBrains Rider的.NET用户秘密以及如何从你的应用程序中管理和使用它们。
https://devblogs.microsoft.com/visualstudio/new-better-search-in-visual-studio/
对Visual Studio中预览的新的一体式搜索的介绍。
https://medium.com/abp-community/rate-limiting-with-asp-net-core-7-0-e7834a94b8c5
介绍.NET 7中的速率限制API以及如何在ASP.NET Core中使用它。
探索最小化API的模型绑定逻辑:最小化API的幕后故事--第395部分。
这篇文章解释了如何将收到的请求与处理程序参数绑定的机制和流程。
https://khalidabuhakmeh.com/multiple-file-drag-and-drop-upload-with-aspnet-core
如何实现Razor页面的多文件拖放式上传。
https://chnasarre.medium.com/reading-object-in-memory-starting-with-stacks-aaef54bd521d
关于如何读取可由诊断协议nettrace接收的对象的有效载荷的解释。
https://dev.to/karenpayneoregon/learn-dateonly-timeonly-23j0
介绍DateOnly和TimeOnly的基础知识,以及它们在Json.NET、System.Text等库中的支持。
https://qiita.com/emoacht/items/3f7e216b43431e960751
关于PropertyChangedEventManager``AddListener
/RemoveListener
必须从同一个线程调用。
https://zenn.dev/fugi/articles/d2a5ef35e4190f
试图实现类似Dictionary的结构,并了解如何处理哈希值。
https://zenn.dev/nin_neko/articles/6f08f2fdace43f
关于以及如何处理当入口点有STAThread
属性但却是async Task
的异步方法时,线程单位没有被设置为STA。
https://qiita.com/yaju/items/35d94a20e8e3e8ca268c
Microsoft.Extensions.Configuration.Json(例如appsettings.json)关于允许在JSON中写JavaScript或C#风格的注释。
https://qiita.com/gushwell/items/d659027304645b30b805
如何在ASP.NET Core中用ValidationAttribute
实现自定义验证属性。
https://medium.com/@skyake/the-evolution-of-delegate-performance-in-net-c8f23572b8b1
.NET 7中PGO的委托优化解析。
https://dev.to/sannae/track-my-coding-progress-on-github-with-a-net-worker-service-49g4
一个如何实现工作者服务的例子,以跟踪GitHub上存储库的语言统计数据。
https://ufcpp.net/blog/2023/1/using-alias-any-types/
对通过 "使用"来扩展别名可以定义的内容的建议进行评论。
https://adamsitnik.com/PerfCollectProfiler/
如何在Linux上用BenchmarkDotNet对.NET进行剖析。
0.13.3中引入的PerfCollectProfiler插件允许将剖析结果以PerfView、SpeedScope和任何支持perf文件的工具所能打开的格式导出。
https://johnnys.news/2023/01/Dots-a-dotnet-SDK-manager
一个用于安装和卸载各种.NET SDK的GUI工具。
https://github.com/VeloxDB/VeloxDB
一个用C#编写的面向对象的数据库,适用于.NET平台。
https://github.com/otterkit/otterkit
为.NET平台提供ISO COBOL 2022的编译器和运行时实现。
https://stablediffusiondiscordbot.azurewebsites.net/
Discord Bot和它的网站,用于用稳定扩散的AI图像生成,等等。
https://github.com/Marplex/WpfSnowfall
一个允许你在你的WPF应用程序中进行降雪的控件。
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/package-validation/baseline-version-validator
描述了在.NET 6及以后版本中引入的NuGet包验证功能。
它可以检测到从创建NuGet包时指定的基线版本对API的破坏性变化。
https://dotnet.microsoft.com/ja-jp/learn/ml-dotnet/get-started-tutorial/intro
关于使用ML.NET来确定文本的正负性的教程。
谈谈.NET 8中Kestrel的命名管道支持。
https://twitter.com/jamesnk/status/1615902642492039180
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
https://github.com/InCerryGit/.NET-Weekly
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。目前一群已满,现在开放二群。
如果提示已经达到200人,可以加我微信,我拉你进群: ls1075
另外也创建了QQ群,群号: 687779078,欢迎大家加入。