.NET周报【12月第1期 2022-12-08】
国内文章
CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了?
https://www.cnblogs.com/savorboard/p/cap-7-0.html)
今天,我们很高兴宣布 CAP 发布 7.0 版本正式版,我们在这个版本中带来了大批新特性以及对性能的优化和改进。
使用.NET7 和 C#11 打造最快的序列化程序-以 MemoryPack 为例
https://www.cnblogs.com/InCerry/p/how-to-make-the-fastest-net-serializer-with-net-7-c-11-case-of-memorypack.html
本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的;其中从很多方面(可变长度、字符串、集合等)解释了一些性能优化的技巧,值得每一个开发人员学习,特别是框架的开发人员的学习,一定能让大家获益匪浅。
记一次 .NET 某电子厂 OA 系统 非托管内存泄露分析
https://www.cnblogs.com/huangxincheng/p/16945067.html
这周有个朋友找到我,说他的程序出现了内存缓慢增长,没有回头的趋势,让我帮忙看下到底怎么回事,据朋友说这个问题已经困扰他快一周了,还是没能找到最终的问题,看样子这个问题比较刁钻,不管怎么说,先祭出 WinDbg。
MasaFramework -- 领域驱动设计
https://www.cnblogs.com/zhenlei520/p/16945150.html
本文介绍了什么是领域驱动设计,另外如何通过 MasaFramework 实现领域驱动设计。
CA 周记 - 20 年的 .NET ,更需要 00 后的你
https://mp.weixin.qq.com/s/reWHEi-LxPqh6JCoORke8A
.NET 20 周年, 在国内有一大批和 .NET 一起成长的开发者,有一大批在不同行业采用 .NET 作为解决方案的企业。或者你会经常听到很多的大神说他的 .NET 经历,也会听到 .NET “牛逼” 的故事,更会听到用 .NET 不用“996”的神话。但对于一个完整的技术生态,作为一名 .NET"老兵“ 应该让更多的年轻人学习 .NET , 让更多新的创意通过 .NET 创造。
Unity 的未来,是固守 Mono,还是拥抱 CoreCLR?
https://mp.weixin.qq.com/s/062T1v7lcCxW9OwsThDp9A
Unity 坚定的拥抱.NET 标准生态,正全速向 CoreCLR 迁移。
使用 C# 开发的现代轻量级 Windows 文本编辑器
https://mp.weixin.qq.com/s/uyj0uiyd4X3qlcfM9AobkQ
你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用!Notepads 是一个具有简约设计的现代化轻量级文本编辑器,在 github 上开源,由微软大佬 Jiaqi Liu 开发。
ShardingCore 7.0 版本发布
https://mp.weixin.qq.com/s/FQoU4IPe6bZg96zsIiFfyg
NCC ShardingCore 是一款 EntityFramework Core based 高性能、轻量级、分表分库、读写分离解决方案,具有零依赖、零学习成本、零业务代码入侵等特点。ShardingCore 7.0 已于近期发布。
动态编译库 Natasha 5.0 版本发布
https://mp.weixin.qq.com/s/80W6Fb2gCdGJaoNp33S3pA
动态编译库 Natasha 5.0 于十月份发布,此次大版本更新带来了强大的兼容性支持,目前 Natasha 已支持 .NET Standard 2.0 及 .NET Core 3.1 以上版本(包括 .NET Framework)了。
推荐一套全功能的软 NVR 接口平台
https://mp.weixin.qq.com/s/BzWQ1kQWjA9w7qIajhTing
大家好,宝弟今天给大家推荐一套全功能的软 NVR 接口平台 AKStream,AKStream 是一套全功能的流媒体管理控制接口平台。集成 GB28181,RTSP,RTMP,HTTP 等设备推拉流控制、PTZ 控制、音视频文件录制管理、音视频文件裁剪合并等功能与一体 AKStream 使用.Net6 框架,采用 C#语言编写。
使用.NET 开发一个屏幕 OCR 工具
https://mp.weixin.qq.com/s/tZDaW6S9tE7tsnusTYq0xQ
本文将介绍使用.NET 开发的一款桌面截图 OCR 工具,软件已开源,地址:https://github.com/sangyuxiaowu/Snipping_OCR
如何序列化派生类
https://mp.weixin.qq.com/s/zZ2KkmEXgdK_bhTyXDsl6w
本文介绍了System.Text.Json
返回抽象类集合时无法处理派生类的问题,并给出了解决方案。
主题
C#活动日程 | 2022 年活动日程 - Qiita
https://qiita.com/advent-calendar/2022/csharplang
2022 年的 C#活动日程。
2022 年的 C#活动
https://csadvent.christmas/
2022 年英语圈的 C#活动日程。
Rider 2022.3:支持.NET 7 SDK、C#11 的最新版本、主要的性能改进,以及更多新特性!| The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2022/12/07/rider-2022-3/
Rider 2022.3 已经发布。
这篇文章涵盖了这个版本中的以下主题
- 性能改进
- 支持.NET 7 SDK
- 支持 WSL2
- UX/UI 的改进
- 对接工具窗口
- 新的主工具条
- 最新的 C#特性
- 网站开发更新
- 游戏开发更新
- NuGet 支持
- 中央软件包管理和漏洞版本检测
- 对 ARM64 支持的早期预览
- 支持在 ARM 平台的 Windows 和 Linux 上运行
- 其他亮点
- 内置 dotMemory macOS 和 Linux 支持等。
ReSharper 2022.3 发布,具有更多的 C# 11 功能,NuGet 漏洞检测,并支持 Visual Studio ARM64.| The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2022/12/07/resharper-2022-3/
ReSharper 2022.3 已经发布。
这篇文章涵盖了这个版本中的以下主题
- C#支持
- C# 11 的特点
- 语言注入
- 全球进口水沟标志
- 漏洞版本的依赖检测
- 支持 ARM64 上的 Visual Studio
- 动态程序分析的数据库检查
- 支持 C++
- 杂项。
- 反编译器的更新和 GraphML 格式的类型和项目依赖关系图的导入/导出
dotCover, dotMemory, dotPeek, and dotTrace 2022.3 发布!| The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2022/12/07/dotcover-dotmemory-dotpeek-dottrace-2022-3/
dotCover, dotMemory, dotPeek 和 dotTrace 2022.3 已经发布。
- dotCover:增加了对 ARM64 上的 Windows 和 ARM32 上的 Linux 运行时的支持
- dotMemory: 现在可以在 Linux 和 macOS Rider 上使用,并支持 ARM64 的 Windows。
- dotPeek:现在支持静态抽象和通用属性等新功能
- dotTrace:增加了对 ARM64 上的 Windows 和 ARM32 上的 Linux 运行器的支持,对快照分析进行了一些改进,取消了性能视图。
升级 Azure Pipelines 的.NET Agent - Azure DevOps 博客
https://devblogs.microsoft.com/devops/upgrade-of-net-agent-for-azure-pipelines/
宣布将 Azure Pipelines 的.NET Agent 从.NET Core 3.1 升级到.NET 6。
为了支持新的操作系统和架构,并且因为对.NET Core 3.1 的支持将于 12 月 13 日结束,所以我们将于 12 月 13 日推出.NET Core 3.1。
新的代理将分三个阶段推出。 第一阶段为预览版,有一个新闻发布版本可供下载和测试;第二阶段为微软托管的代理池的更新;第三阶段为自我托管的代理产品。
这篇文章还包含了关于自我托管池中的更新的说明和常见问题。
发布 ILSpy 8.0 Preview 3 - icsharpcode/ILSpy
https://github.com/icsharpcode/ILSpy/releases/tag/v8.0-preview3
ILSpy 8.0 Preview 3 已经发布。
这个版本包括对 C# 11 必要成员的支持,对 Roslyn 模式检测的更新,以及其他错误和改进。
文章、幻灯片等。
(C#)在没有字符串插值的情况下获得字符串插值结果 - 铃铛为猫而响
https://ikorin2.hatenablog.jp/entry/2022/11/29/201801
文章介绍了一个黑客技术,如果你用CallerArgumentExpression
作为使用InterpolatedStringHandler
的处理程序构造函数的第一个参数,你可以在格式化之前得到字符串。
然而,这种行为并不是原来所期望的,可能会被修复。
- 在`[InterpolatedStringHandler]`的构造函数中,接收器参数的`[CallerArgumentExpression]`的行为发生了变化 - 问题#59661 - dotnet/roslyn[1]
改进了 Rider 2022.3 的启动性能 | .NET 工具博客
https://blog.jetbrains.com/dotnet/2022/12/01/improved-startup-performance-in-rider-2022-3/
关于改进 Rider 2022.3(现在的 EAP)中的启动性能的文章。
Rider 2022.3 在 IDE 冷启动、项目加载时间、文件和汇编扫描、垃圾收集和内存使用等方面进行了改进。
第一天:如何使用 Moq 为 HttpClient 编写测试
https://dev.to/canro91/how-to-write-tests-for-httpclient-using-moq-2i9e
关于用 Moq 为 HttpClient 调用编写测试的文章。
用 AsyncLocal 传递上下文
https://medium.com/@norm.bryar/conveying-context-with-asynclocal-91fa474a5b42
关于用AsyncLocalT>
实现环境上下文(跨多个函数、组件和任务共享数据)的文章。
Visual Basic 2022 年回顾 - Qiita
https://qiita.com/yaju/items/882e1de76a763e098fce
一篇回顾文章,介绍了 2022 年关于 Visual Basic 的事件和文章。
C# 探索 C#定位记录中参数数量的上限
https://zenn.dev/shimat/articles/5b81d6627491ab
文章研究了 C#9 中引入的记录类型的位置参数上界。
这篇文章还讨论了 JSON 序列化器中的上限。
介绍.NET 7 的 LINQ 中新增的方法 - Qiita
https://qiita.com/RyotaMurohoshi/items/71a84fe7a5cf8df57054
文章介绍了在.NET 7 中为 LINQ 添加的Order
和OrderDescending
方法。
灾难性的回溯:正则表达式如何能导致 ReDoS 漏洞?
https://dev.to/unicorn_developer/catastrophic-backtracking-how-can-a-regular-expression-cause-a-redos-vulnerability-aia
关于正则表达式回溯导致的 ReDoS 漏洞的文章。
它描述了各种正则表达式模式及其执行时间,并介绍了避免灾难性回溯的方法。
试用 C# 11 的一些新功能 - Qiita
https://qiita.com/haruka_kotani/items/6f470579b86b005c6cb9
一篇简要介绍 C# 11 新特性的文章:原始字符串字面、换行字符串完成、UTF-8 字符串字面、必要成员和文件本地类型。
在 Windows 开发环境中建立一个 Rider(仅容器 WSL)。
https://zenn.dev/dynamitecoolguy/articles/17612f6624da4d
关于如何在 Windows 的 Rider 上使用 WSL 容器构建 ASP.NET Core 开发环境的文章。
AWS 说 .NET 开源遭遇 "严重的资金不足 "
https://www.theregister.com/AMP/2022/12/01/net_open_source_heavily_underfunded/
关于 AWS 对开源的投资的文章。
我想改变 Visual Studio 2022 中 IntelliCode 输入建议的适用键| Butisacchi
https://blog.azure.moe/2022/12/03/visual-studio-2022-%e3%81%ae-intellicode-%e3%81%ae%e5%85%a5%e5%8a%9b%e5%80%99%e8%a3%9c%e3%81%ae%e9%81%a9%e7%94%a8%e3%82%ad%e3%83%bc%e3%82%92%e5%a4%89%e3%81%88%e3%81%9f%e3%81%84/
关于如何从 Tab 键改变 IntelliCode(所谓的 AI 代码完成)的确认的文章。
它说你可以在 Visual Studio 中改变设置,用 →(右方向键)确认(你不能把它改为任何键)。
原始字符串的空白字符 | 未经证实的飞行 C 博客
https://ufcpp.net/blog/2022/12/rawstringwhitespace/
关于 C# 11 对原始字符串字元中空白的处理的文章。
它解释了各种空白字符以及在缩进中如何处理它们。
.NET 注释月刊|2022 年 12 月|.NET 工具博客
https://blog.jetbrains.com/dotnet/2022/12/05/net-annotated-monthly-december-2022/
jetbrains 公司于 2022 年 12 月汇编了与.NET 有关的信息。
Stackalloc 的自然类型 | 不明飞行物 C 博客
https://ufcpp.net/blog/2022/12/stackalloc-natural-type/
一篇关于 stackalloc 确定的自然类型如何根据描述方式而变化的文章,作为确定变量类型时的一种推论。
例如,var a = stackalloc byte[10];
会有类型指针(byte*
),但var a = (stackalloc byte[10]);
会有Spanbyte>
。
.NET MAUI 社区工具包的新内容 - .NET 博客
https://devblogs.microsoft.com/dotnet/whats-new-in-the-dotnet-maui-community-toolkit/
关于.NET MAUI 社区工具包的新功能的文章。
文章解释了新增加的组件和平台支持,以及已发布版本(1.4.0、2.0.0 和 3.0.0)之间的差异。
- 扩张器视图
- DockLayout
- 状态容器(StateContainer)
- 支持 Tizen
- 支持.NET 7
- MAUI.Markup Toolkit
- 发布版本
在 Visual Studio 中构建一个新的 JavaScript 提示体验 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/building-a-new-javascript-linting-experience-in-visual-studio/
文章提供了关于 ESLint 支持的背景,这是 Visual Studio 2022 17.4 中的新内容。
这篇文章描述了由 vscode-eslint 启发的 LSP 扩展,包括启用服务的过程。
WinForm 的流程外设计器的自定义控件 - .NET 博客
https://devblogs.microsoft.com/dotnet/custom-controls-for-winforms-out-of-process-designer/
这篇文章解释了如何在 WinForms 的.NET Core 及以上版本的进程外设计器中支持自定义控件,该设计器在 Visual Studio 中使用。 它展示了如何通过一个示例项目进行迁移。
用.NET 中的 Serilog 记录到亚马逊云观察--云观察入门
https://codewithmukesh.com/blog/amazon-cloudwatch-logging-serilog-dotnet/
文章描述了如何使用 Serilog 从 ASP.NET Core(M.E.L.ILogger
)到 Amazon Cloudwatch 的日志。
介绍 C#11:字符串插值表达式中的换行符
https://anthonygiretti.com/2022/12/04/introducing-c11-newlines-in-string-interpolation-expressions/
关于 C#11 如何允许在字符串插补括号中使用换行符的文章。
用 GitHub Actions 测量.NET 项目的代码覆盖率。
https://zenn.dev/shimat/articles/03ad92427cbed6
文章介绍了使用 GitHub Actions 从拉动请求构建时如何测量代码覆盖率,以及如何在评论中留下报告。
我想在 C#(.NET Core 3.1, .NET 6)运行时替换系统时区(使 TimeZoneInfo.Local 返回 UTC) - Qiita
https://qiita.com/fukasawah/items/c42b586745be56fed674
关于如何使TimeZoneInfo.Local
返回一个 UTC 的值,忽略系统时区的文章。
文章介绍了如何通过强行用反思代替来处理这个问题,以及尝试的原因。
Blazor 准备用 WebAssembly 使用多线程(等待.NET 8) - Qiita
https://qiita.com/kaorumori/items/d6d68987b8468f8f6b32
文章介绍了计划在.NET 8 中用 WebAssembly 浏览器应用程序(不是 Blazor)运行 Blazor WebAssembly 的多线程功能的步骤,作为.NET 7 的实验性功能。
这篇文章证实了在实际负载下使用多个内核。
如何在没有 Mac 的情况下只用 Windows 调试 iOS 应用程序(.NET MAUI) - Qiita
https://qiita.com/MAUIHighSchool/items/1ffcfa508342fc250757
关于如何在 Windows 上直接从 Visual Studio 部署和调试 iOS 应用程序的文章。
C# 11 (NET 7)中的新功能与交互式实例
https://medium.com/entech-solutions/new-features-in-c-11-net-7-with-interactive-examples-c8e4e5ea1e5a
文章展示了使用 C# 11 特性并使该代码在.NET Fiddle 中可执行的例子。
使用 Channels 并行处理数据
https://maciejz.dev/processing-data-in-parallel-channels/
文章展示了如何使用 System.Threading.Channels 实现并行处理数据的代码。
用 Roslyn 检测和删除死代码
https://jason-ge.medium.com/detect-and-remove-dead-code-with-roslyn-26e741b20d3c
关于如何使用 Roslyn 来检测和删除死代码(未使用的类型)的文章。
如何在 MAUI 中使用 SwiftUI 组件
https://medium.com/@tema.denisoff/how-to-use-swiftui-components-in-maui-f43c54d2173c
关于如何在.NET MAUI 中使用 Swift UI 组件的文章。
包括如何为 Swift UI 创建和使用 UIKit 包装器。
基于 SwiftUI 视图的功能性 MAUI 控件
https://medium.com/@tema.denisoff/functional-maui-control-based-on-swiftui-view-e23135d1f2bc
关于如何从.NET MAUI 以功能性方式实现 SwiftUI 组件的文章,包括属性绑定等。
C# 中的 null 运算符(??) 的优先权和约束规则 - Qiita
https://qiita.com/denkiuo604/items/87345ce8031640b37e7a
本文讨论了 C#中空凝聚运算符(??
)的优先级和绑定规则。 以及在 C#中的优先级和连接规则。
为什么.NET 7 是开始 C# SIMD 编程的最佳场所。
https://zenn.dev/pcysl5edgo/articles/d3e787599c5c8b
与.NET 6 相比,在 C#中编写利用 SIMD 的代码更容易,因为不再需要fixed
,也不再需要在 x64 和 ARM64 之间进行分支。
https://dev.classmethod.jp/articles/net-annotations-lambda-framework/
通过 AWS 预览版中的.NET 注释 Lambda 框架,在.NET 中实现无服务器 API(Lambda+API 网关)。
如何在 C#11 中构建 MemoryPack--世界上最快的二进制序列化器--演讲稿
https://speakerdeck.com/neuecc/c-number-11-niyorushi-jie-zui-su-bainarisiriaraiza-memorypack-nozuo-rifang
幻灯片展示了如何在实现名为 MemoryPack 的快速序列化器的独创性基础上,对 C# 11 的语言特性、Source Generator 和.NET 库进行现代利用。
图书馆、资料库、工具等。
DotNetBrowser | 用于 WPF 和 WinForms 应用程序的.NET 网络浏览器
https://www.teamdev.com/dotnetbrowser
一个基于 Chromium 的商业组件库,用于 WPF 和 Windows Forms 中的嵌入式浏览器(所谓的 WebView)。
它与 CefSharp 的不同之处在于,它有一个托管模式(与 CefSharp 相比,它在一个更外部的进程中运行),并且可以轻松地启用视频支持。
- [将浏览器嵌入到.NET 应用程序中:DotNetBrowser 或 CefSharp?"](https://blog.teamdev.com/embedding-browser-into-net-app-dotnetbrowser-or-cefsharp-cc94ae17f3bb "将浏览器嵌入到.NET 应用程序中:DotNetBrowser 或 CefSharp?"")
featbit/featbit: 一个可扩展的、高性能的特征管理和渐进式实验平台
https://github.com/featbit/featbit
用于管理特征标志的应用服务器。
- 介绍 FeatBit[2]
- 如何在几个月内建立一个特色旗帜服务 分钟[3]
开发者新闻 - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.DeveloperNews
一个实验性的扩展,在 Visual Studio 中带回了开发者的新闻。
- 获取您的开发者新闻 - Visual Studio 博客[4]
快速 Endpoints
https://fast-endpoints.com/
ASP.NET 的一个框架,用于实现所谓的 Request-Endpoint-Response(REPR)模式,取代了 Minimal API 和 MVC。
- 使用.NET 6 Minimal API 中的 JWT Bearer 认证来确保端点的安全。FastEndpoints](https://ilgaz.medium.com/securing-endpoints-with-jwt-bearer-authentication-in-net-6-minimal-api-using-fastendpoints-51cbb5d633b9)
maraf/dotnet-wasm-react: 在反应组件内的 WASM 上的.NET
https://github.com/maraf/dotnet-wasm-react
从 React 组件处理.NET WebAssembly 的示例代码。
vscode-pets - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=tonybaloney.vscode-pets
一个允许你在 Visual Studio Code 内拥有宠物的扩展。 调用mod
宠物将带来 dotnet-bot(紫色的那个)。
- Mod the dotnet-bot[5]
网站,文件,等等
推文
https://twitter.com/dotnetonAWS/status/1533841159436611587
https://pages.awscloud.com/dotNETOpenSourceOnAWSCreditsProgram.html
亚马逊为.NET 开源项目提供 AWS 积分和资金的支持,目前以资助如 FluentValidation 等项目。
image-20221211171044840
在这里,我们要向大家介绍的是".NET Conf 2022 "的视频,以及一张关于该内容的笔记思维导图,目前还是日文版。
https://twitter.com/jsakamoto/status/1597555960951631872?s=12& t=yjMpM4TnEEFCnbK7AUbr1A
image-20221210144923052
Xamarin.Forms 的 MessageCentre 已被废弃,因此建议使用.NET Community Toolkit 的 WeekReferenceMessenger。
https://twitter.com/JamesMontemagno/status/1599101553813880839
image-20221210145036075
讨论 C#语言设计和工作组会议记录的可用性。
https://twitter.com/davidfowl/status/1600001951970000896
image-20221210145131274
深入挖掘
[Breaking change]: WebApplicationBuilder
给予ASPNET_
前缀的环境变量较低的优先权 - 问题#498 - aspnet/Announcements
https://github.com/aspnet/Announcements/issues/498
在.NET 7 之前的 ASP.NET Core 中,ASPNET_
前缀的环境变量衍生配置覆盖了命令行参数和DOTNET_
前缀值,但在.NET 7 及以后的版本中,用ASPNET_
前缀指定不能使用命令行参数和 一个破坏性的改变,即带有 DOTNET_
前缀的规范取代带有命令行参数或 DOTNET_
前缀的规范。
VS2022 在 Nuget 上的搜索结果 - Visual Studio Feedback
https://developercommunity.visualstudio.com/t/VS2022-Search-results-on-Nuget/10163787
Visual Studio 2022 的 NuGet 管理界面中的一个 bug,即搜索后稍微滚动一下可能就看不到第一个结果了。
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-12-08.md
- 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-12-08.md
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
- 10~50字左右的标题
- 对应文章或项目网址访问链接
- 200字以内的简介,如果太长会影响阅读体验
https://github.com/InCerryGit/.NET-Weekly
参考资料
[1]
在[InterpolatedStringHandler]
的构造函数中,接收器参数的[CallerArgumentExpression]
的行为发生了变化 - 问题#59661 - dotnet/roslyn: https://github.com/dotnet/roslyn/issues/59661
[2]
介绍FeatBit: https://featbit.medium.com/introducing-featbit-e0cef61572a
[3]
如何在几个月内建立一个特色旗帜服务 分钟: https://dev.to/cosmicflood/how-to-build-a-feature-flags-service-in-a-few-minutes-4hj0
[4]
获取您的开发者新闻 - Visual Studio博客: https://devblogs.microsoft.com/visualstudio/get-your-developer-news/
[5]
Mod the dotnet-bot: https://mod-dotnet-bot.net/
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: .NET周报【12月第1期 2022-12-08】
本文地址: https://pptw.com/jishu/256.html