国内文章
九哥聊Kestrel网络编程第一章:开发一个Redis服务器
https://mp.weixin.qq.com/s/HJYnBE-7wbvkAYHxQaq3eQ
我和拥有多个.NET 千星开源项目作者九哥一拍即合,为了让更多的人了解 Kestrel,计划写一系列的文章来介绍它;本文是九哥发布的第一篇,通过 Kestrel 实现一个 Redis 的伪服务器,带大家了解 Kestrel 除了承载 HTTP 协议,还有其它更多的可能性,DotNetty 能做到的,Kestrel 同样也可以。
用最少的代码打造一个Mini版的gRPC框架
https://www.cnblogs.com/artech/p/16950268.html
在《用最少的代码模拟gRPC四种消息交换模式》中,我使用很简单的代码模拟了gRPC四种消息交换模式(Unary、Client Streaming、Server Streaming和Duplex Streaming),现在我们更近一步,试着使用极简的方式打造一个gRPC框架(github地址)。这个gRPC是对ASP.NET Core gRPC实现原理的模拟,并不是想重新造一个轮子。
玩好.NET高级调试,你也要会写点汇编
https://www.cnblogs.com/huangxincheng/p/16965632.html
.NET 高级调试要想玩的好,看懂汇编是基本功,但看懂汇编和能写点汇编又完全是两回事,所以有时候看的多,总手痒痒想写一点,在 Windows 平台上搭建汇编环境不是那么容易,大多还是用微软的 MASM+DosBox
搭一个 8086 的环境,这玩意距今快 50 年了,今天为大家介绍介绍。
为什么推荐Kestrel作为网络开发框架
https://www.cnblogs.com/kewei/p/16955086.html
网络框架千千万万,在dotnet平台,我们可以直接手撸Socket,也可以基于dotnetty来开发,或者选择某些第三方类似于dotnetty的网络库,为何我要推荐Kestrel呢?
天坑,这样一个lambda随机取数据也有Bug
https://www.cnblogs.com/rupeng/p/16961982.html
前几天,一位网友跟我说他编写的一段很简单的代码遇到了奇怪的Bug,他要达到的效果是从一个List中随机取出来一条数据,代码很简单但是有BUG,带大家一起了解下。
.NET性能优化-ArrayPool同时复用数组和对象
https://www.cnblogs.com/InCerry/p/use-arraypool-with-naver-clear-array.html
大佬您好,之前读了您的文章受益匪浅,我们有一个项目经常占用 7-8GB 的内存,使用了您推荐的 ArrayPool
以后降低到 4GB 左右,我还想着能不能继续优化,于是 dump 看了一下,发现是 ArrayPool
对应的一个数组有几万个对象,这个类有 100 多个属性。我想问有没有方法能复用这些对象?感谢!
推荐一个使用 .NET 6 开发的开源媒体系统
https://mp.weixin.qq.com/s/_3LWLTa2Oyn0jwdIuJ1zsw
Jellyfin 是一个使用.NET6编写的免费的媒体系统,它可以让您更好的管理媒体,包括电影,音乐,图书,照片等,它是 Emby 和 Plex 的替代方案,在 Github 开源并拥有18.6k 的 Star。
dotnet-exec 让 C# 程序更简单
https://mp.weixin.qq.com/s/Agk3i-YLqNQfcjG4Vc-cIQ
dotnet-exec
是一个可以执行 C# 程序而不需要项目文件的命令行工具,并且你可以指定自定义的入口方法不仅仅是 Main
方法。
C# 11 中的新增功能
https://mp.weixin.qq.com/s/Ga-jBE8iih7KtQVjefwlnw
我们很高兴地宣布 C# 11 已经发布!与往常一样,C# 开辟了一些全新的领域,同时推进了过去版本中一直在运行的几个主题。我们的文档页面上的 C# 11 的新增功能下有许多功能和详细信息,这些内容都得到了很好的介绍。
开发高性能ASP.NET应用
https://mp.weixin.qq.com/s/E-7y8hV006dhx7TBMrM5Gg
本文是“.NET Conf China 2022”上我的一个分享,这里更细化的分享出来。分享分为四个部分:1. 制定目标、2.设计应用、3. 正确测试、4.性能优化。
图像处理技术OpencvSharp入门
https://mp.weixin.qq.com/s/TqltBB4E-Z6w48z1K-Y6tw
在.NET下常用OpenCV进行图像处理工作,常用的.NET下的OpenCV库有Emgu CV和OpenCVSharp。今天我们就来和大家介绍一些OpenCvSharp。
工程坐标转换方法 C# 代码实现
https://mp.weixin.qq.com/s/J58yfxbtT7gspZSCEEMK_w
这里针对GPS接收的WGS84椭球的经纬度转换为地方坐标系的问题,利用C#,对工程坐标转换方法和步骤做出详细的解答。不基于任何类库和函数库,也未使用矩阵库,可以便利的将代码移植到任何语言。
主题
.NET 7 中的网络库改进 - .NET Blog
https://devblogs.microsoft.com/dotnet/dotnet-7-networking-improvements/
介绍.NET 7中与网络有关的改进的文章。该文章详细介绍了以下项目:
改进对连接执行失败的处理
为HttpHeaders读取线程安全
HTTP/2和HTTP/3协议错误检测
HTTP/3
QUIC
.NET中的的QUIC。
API(QuicListener, QuicConnection, QuicStream)。
安全问题
协商API(Windows认证)
证书验证选项
性能
WebSocket
WebSockets握手响应的细节
外部HTTP客户端供应
HTTP/2上的WebSockets
试用Visual Studio 2022版17.5预览版2 - Visual Studio博客
https://devblogs.microsoft.com/visualstudio/try-out-visual-studio-2022-17-5-preview-2/
Visual Studio 2022版17.5预览版已经发布。
一体化搜索的改进
编辑时的粘性滚动
在调试器文本可视化器中对URL编码的字符串、Base64、JWT和其他字符串进行解码
快速补充
改进的重新认证工作流程
将ASP.NET Core应用程序发布到Azure容器应用程序中
ASP.NET核心项目应用程序输出到集成终端
各种C++改进
使用.config文件定制安装布局
能够在退出时更新
.NET 2022年12月更新 - .NET 7.0.1, .NET 6.0.12, .NET Core 3.1.32 - .NET博客
https://devblogs.microsoft.com/dotnet/december-2022-updates/
.NET 7.0.1、.NET 6.0.12和.NET Core 3.1.32已被发布。
该版本包含一个安全补丁,它修复了一个远程代码执行漏洞,该漏洞允许通过打开精心制作的XPS文件来执行代码。
这也是.NET Core 3.1的最后一个版本,它将在2022年12月13日不被支持。
.NET框架2022年12月安全和质量滚动更新 - .NET博客
https://devblogs.microsoft.com/dotnet/dotnet-framework-december-2022-security-and-quality-rollup-updates/
2022年12月发布的.NET框架安全和累积滚动更新。
该版本包含一个安全补丁,并修复了一个远程代码执行漏洞,该漏洞允许通过打开精心制作的XPS文件执行代码。
发布IronPython 3.4.0 - IronLanguages/ironpython3
https://github.com/IronLanguages/ironpython3/releases/tag/v3.4.0
IronPython 3.4.0已经发布。
该版本支持Python 3.4语法和标准库。它还支持一些较新版本的语法,等等。
运行时目标是.NET框架4.6.2、.NET Core 3.1和.NET 6。
它也以.NET工具的形式发布,可以通过 dotnet tool install-gIronPython.Console
来安装和运行。
-IronPython 3.4.0终于正式发布了- 与.NET集成的Python语言的开源实现/从'Python 2'过渡到'Python 3' - Windows森林
多语言笔记本 - 2022年12月发布 - .NET博客
https://devblogs.microsoft.com/dotnet/polyglot-notebooks-december-2022-release/
2022年12月发布的Polyglot Notebooks(以前的.NET Interactive)。
升级到.NET 7
支持C# 11和F# 7
SQL和KQL的改进与新的动态内核选择器
2.2.2版 - mysql-net/MySqlConnector
https://github.com/mysql-net/MySqlConnector/releases/tag/2.2.2
Async MySqlConnector 2.2.2已经发布。
该版本修复了TLS连接初始化和连接异常时对象销毁过程中的内存泄漏。
Visual Studio Code 2022年11月
https://code.visualstudio.com/updates/v1_74
Visual Studio Code 1.74(1.74.1)已经发布。
改善无障碍设施。
定制资源管理器的自动显示。
笔记本和差异视图中的音频提示
合并编辑器中的撤销/重做
不安全的储存库管理
通过JavaScript
console.profile
收集从返回到定义 (JavaScript/TypeScript)
远程隧道
在Jupyter笔记本中进行 "只是我的代码 "的调试
开发容器中的GPU支持
此外,在1.74版发布后,1.74.1版也已发布,并对各种错误进行了修复。
使用 "Visual Studio Code "进行远程开发现在更容易了 - 现在提供了远程隧道功能/不需要 "SSH "了。使用 "VS代码服务器 "轻松设置 - Windows森林
用项目迁移从ASP.NET迁移到ASP.NET Core第五部分 - .NET博客
https://devblogs.microsoft.com/dotnet/migrating-from-asp-net-to-asp-net-core-part-5/
一系列关于从ASP.NET迁移到ASP.NET Core的文章,其中System.Web.Adapter 1.0现已发布。
这篇文章介绍了迁移的Visual Studio扩展和System.Web.Adapter的更新。
Visual Studio中用于ASP.NET Core项目的开发隧道 - Visual Studio博客
https://devblogs.microsoft.com/visualstudio/dev-tunnels-in-visual-studio-for-asp-net-core-projects/
一篇关于Dev tunnels(开发隧道)的介绍性文章,这是Visual Studio中ASP.NET Core项目可用的预览功能。
Dev tunnels是一种端口转发功能,允许从外部来源(如ngrok)访问本地环境。
文章介绍了最新的更新和如何使用该功能,持久性和临时性隧道的区别,工具窗口和环境变量支持。
文章、幻灯片等
未使用通用类型参数的TypeLoadException问题 | 未经证实的飞行C博客
https://ufcpp.net/blog/2022/12/unused-generic-type-parameter/
关于运行时行为问题的文章,涉及结构体的泛型和包含它们的结构。
如果 structA<T>{}
被定义为 structB{A<B>Value;}
,我们谈论的是防御性地抛出一个异常,尽管它不是递归。
在实践中尝试.NET Lambda的Native AOT | DevelopersIO
https://dev.classmethod.jp/articles/net-lambda-native-aot/
文章中对AWS Lambda支持的.NET应用的Native AOT进行了实际测试。
在文章中,除了使其发挥作用的程序外,还测量并提到了实际的启动时间。(本地AOT较慢,等等。)
我用.NET MAUI做了一个跨平台(计划中)的备忘录应用。
https://zenn.dev/tomori_k/articles/966f34daea405a
关于在.NET MAUI中实现一个备忘录应用程序的文章。
使用NuGet 6.4中的中央软件包管理改进多个项目间的版本控制 - Shibayan Miscellaneous
https://blog.shibayan.jp/entry/20221211/1670748155
关于在NuGet 6.4中使用中央包管理来集中管理项目的包版本的文章。
文章还提到了转换器的存在和关于Dependabot的说明。
Blazor WebAssembly - 通过确保删除没有从任何地方引用的代码来减少.dll大小 - Qiita
https://qiita.com/jsakamoto/items/91c86a0f34de6e6d77b9
关于如何通过在Blazor WebAssembly中进行汇编修剪来减少文件大小的文章。
[Help wanted] 当用Playwright进行E2E测试Blazor服务器时,Playwright的第一个动作太快了,测试失败 - Qiita
https://qiita.com/jsakamoto/items/3d749a9ba4f8523b5291
关于用Playwright测试Blazor服务器时的一个问题,即在事件处理程序连接到预渲染的内容之前,Playwright以读完的方式运行。
Visual Studio生产力的新内容 - Visual Studio博客
https://devblogs.microsoft.com/visualstudio/whats-new-in-visual-studio-productivity/
关于Visual Studio生产力的新功能的文章。
输出窗口的时间戳
选择匹配
用鼠标滚轮进行水平滚动
使用声音提示跟踪代码
突出显示行号
扩展方法没有看到隐式类型转换 | UFCPP的博客
https://ufcpp.net/blog/2022/12/extension-resolution/
一篇解释扩展方法不能用于隐式类型转换的文章。
NET 7中新的5个MVC功能
https://andrewlock.net/5-new-mvc-features-in-dotnet-7/
文章介绍了.NET 7中ASP.NET Core MVC的5个新特性。
Primitive binding
IParseable
,TryParse
.MVC控制器自动猜测
[FromServices]
为依赖注入使用nullable注解来猜测它是否是强制性的
支持MVC中的
IResult
定制的元数据提供者在响应中提供更好的错误名称
使用Keycloak作为Blazor WebAssembly(WASM)应用程序的身份提供者
https://dev.to/nikiforovall/use-keycloak-as-identity-provider-from-blazor-webassembly-wasm-applications-3an6
关于如何使用Keycloak作为Blazor WebAssembly的IdP的文章。
VS2022新的DevTunnel(开发隧道)功能,便于从Azure访问本地调试环境 - Qiita
https://qiita.com/seuharuka/items/6f77983a179042b48e59
一篇介绍和使用Dev tunnels功能的文章,这是Visual Studio 2022的一个预览功能。
C#11与.NET 6.0和.NET Framework 4.8的兼容性 - Qiita
https://qiita.com/skitoy4321/items/77aff330a4ce63dd977c
文章总结了.NET 7中支持的C# 11功能在.NET 6和.NET Framework 4.8中可以使用(但不一定支持)的程度。
在GitHub行动上构建MAUI应用程序
https://zenn.dev/proudust/articles/2022-12-06-build-maui-on-gh-actions
关于GitHub Actions上支持状态和构建.NET MAUI应用程序步骤的文章。
让我们用Blazor创建一个表单,允许你动态地添加更多的输入字段。
https://zenn.dev/okazuki/articles/dynamic-items-form-in-blazor
一篇关于如何使用Blazor动态地增加和减少表单中的项目数量,以及进行验证的文章。
让我们用Blazor创建一个能动态增加细节项目的主细节表格
使用CommunityToolkit.Maui.MediaElement的背景音频流(预览),适用于Android和iOS
https://dev.to/mephisztoe/background-audio-streaming-with-communitytoolkitmauimediaelement-preview-for-android-and-ios-340p
关于如何在Android和iOS上使用CommunityToolkit.Maui.MediaElement(预览版)进行后台流媒体音频的文章。
[调查] 在用MSBuild构建后立即运行dotnet测试,将重新构建 - Qiita
https://qiita.com/lx-sasabo/items/557ff31eee36429d229e
关于调查在用MSBuild构建后运行dotnet测试可能导致构建再次被执行的情况的文章。
该文章指出,结果因是否使用Microsoft.NET.Build.Extensions而发生变化。
用Quartz.NET调度jOB - Code Maze
https://code-maze.com/schedule-jobs-with-quartz-net/
关于如何用Quartz.NET调度Job并在后台处理的文章。
介绍Wolverine,用于有效的服务器端.NET开发
https://jeremydmiller.com/2022/12/12/introducing-wolverine-for-effective-server-side-net-development/
介绍使用Wolverine(一种调解器/消息总线)进行的服务器开发。
将Blazor WebAssembly(由ASP.NET Core托管)部署到Fly.io,该网站可免费使用(使用EF Core+PostgreSQL) - Qiita
https://qiita.com/nobu17/items/824c39493f7b12e94f7b
一篇关于将Blazor WebAssembly部署到fly.io并在服务器端用EF Core连接PostgreSQL等的文章。
用Figma制作的.NET MAUI UI组件 - Qiita
https://qiita.com/MAUIHighSchool/items/232e1bb3d65080f2c548
从Figma的设计到创建一个UI组件,都需要使用.NET MAUI代码。
在.NET 7中,将ASP.NET Core Identity中的2FA's Token Provider长度减少到4位而不是6位。
https://dev.to/mohammedahmed/reduce-the-2fas-token-provider-length-in-aspnet-core-identity-to-4-digits-instead-of-6-digits-in-net-7-6fh
关于如何通过在ASP.NET Core Identity中定制2FA的令牌提供者,尝试从6位数改为4位数的文章。
CommunityToolkit.Mvvm V8介绍 - Qiita
https://qiita.com/kk-river/items/d974b02f6c4010433a9e
CommunityToolkit.Mvvm 8.0.0的一篇介绍性文章。
它介绍了属性、命令代码生成、信使等。
在.NET 8中新增ArgumentException和ArgumentOutOfRangeException帮助器
https://steven-giesel.com/blogPost/f4bc6fcc-5691-4f72-b9bb-75aeeb59230a
文章介绍了正在考虑在.NET 8中加入 ArgumentException
和 ArgumentOutOfRangeException
的辅助方法。
是GC的性能倒退还是其他原因?
https://maoni0.medium.com/is-the-regression-in-gc-or-something-else-38f10018dd21
关于GC中的倒退的文章。
它解释说,有些性能退步看起来像GC性能退步,但其实不是,例如当你升级.NET版本时,你可以通过使用旧的GC来检查它是否确实存在性能退步。
用ML.NET 2.0在C#中进行文本分类
https://medium.com/accessibleai/text-classification-in-c-with-ml-net-2-0-bc979dfd8ca9
关于如何使用ML.NET 2.0进行文本分类的文章。
.NET MAUI x Stripe C# 跨平台轻松信用卡支付 - Qiita
https://qiita.com/MAUIHighSchool/items/393ba93e2eade7f8c9b9
关于如何通过在.NET MAUI中嵌入Stripe SDK在您的应用程序中实现信用卡支付的文章。
C# 11中的新功能(用于编码) - Qiita
https://qiita.com/sh1ch/items/0b6add41584b5ba7f698
用代码介绍C# 11的新特性的文章。
用.NET和Swagger管理你的API的多个版本
https://medium.com/@saeedeldah/managing-multiple-versions-of-your-api-with-net and-swagger-47b4143e8bf5
关于如何使用API Explorer将ASP.NET Core Web API版本管理与Swagger结合起来的文章。
从PHP和Go中调用用C#编写的库 - Qiita
https://qiita.com/Gaku_Ishii/items/ad4abb1e0073519877d7
文章展示了如何用Native AOT将.NET代码构建为一个本地库,并从PHP和Go中调用它。
图书馆、资源库、工具等
ugai/narabemi: 快速并排的视频比较工具
https://github.com/ugai/narabemi
一个用于并排视频比较的工具。
我用WPF做了一个视频对比工具 - Qiita
hadashiA/VYaml: 用于C#的超快、低内存占用的YAML库,专注于.NET和Unity。
https://github.com/hadashiA/VYaml
一个高性能、节省内存的YAML库,针对.NET Standard 2.1的过渡。
davidfowl/SmartLoadBalancer: 没有粘性会话的粘性会话
https://github.com/davidfowl/SmartLoadBalancer/
为类似SignalR的东西实验性地实现了没有粘性的会话。它的工作原理是反复尝试转发请求,直到一个成功的SignalR服务器被YARP拉到。
网站、文件等
推文
Newtonsoft.Json 13.0.1有一个小的退步,没有影响到大多数人,这被误认为是不能使用的(就像对13.0.2一样,因为它打了补丁但不能使用),并被标记为脆弱版本。
https://twitter.com/jamesnk/status/1600844999783903233?s=12
深入研究
RMS v3.0 Planning · Issue #258 · microsoft/Microsoft.IO.RecyclableMemoryStream
https://github.com/microsoft/Microsoft.IO.RecyclableMemoryStream/issues/258
RecyclableMemoryStream 3.0版本的规划
版权声明
国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-12-15.md
其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-12-15.md
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
10~50字左右的标题
对应文章或项目网址访问链接
200字以内的简介,如果太长会影响阅读体验
https://github.com/InCerryGit/.NET-Weekly
推荐阅读: .NET 代码优化 聊聊逻辑圈复杂度 开源的 .NET 数据库迁移框架 WinUI(WASDK)使用MediaPipe检查手部关键点并通过ML.NET进行手势分类 .NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构二)--学习笔记 .NET周报【12月第1期 2022-12-08】 .NET 7 新增的 IParsable 接口介绍 点击下方卡片关注DotNet NB
一起交流学习
▲ 点击上方卡片关注DotNet NB,一起交流学习
请在公众号后台
回复 【路线图】获取.NET 2021开发者路线图 回复 【原创内容】获取公众号原创内容 回复 【峰会视频】获取.NET Conf开发者大会视频 回复 【个人简介】获取作者个人简介 回复 【年终总结】获取作者年终总结 回复 【加群】加入DotNet NB 交流学习群 长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。