.NET周报【11月第1期 2022-11-07】
国内文章
开源·安全·赋能 – .NET Conf China 2022
//mp.weixin.qq.com/s/_tYpfPeQgyEGsnR4vVLzHg
.NET Conf China 2022是面向开发人员的社区峰会,延续 .NET Conf 2022 的活动,庆祝 .NET 7 的发布和回顾过去一年来 .NET 在中国的发展成果,它是由中国各地区的技术社区共同发起举办、知名企业和开源组织联合协办,是年度国内规模最大的 .NET 线上和线下会议,目的是用中文传播 .NET 相关技术的知识和经验。
今年,.NET 相关技术社区将一起,于2022年12月3日~4日 举办为期两天的 .NET Conf China,邀请 .NET 中国开发者共襄盛举。
.NET 零开销抽象指南
//www.cnblogs.com/hez2010/p/dotnet-zero-abstraction.html
目前已经到了 .NET 7 和 C# 11,我们已经能找到大量的相关设施,不过我们仍处在改进进程的中途。本文则利用目前为止已有的设施,讲讲如何在 .NET 中进行零开销的抽象。
如何在.NET程序崩溃时自动创建Dump?
//www.cnblogs.com/InCerry/archive/2022/11/02/how_to_automic_create_dump_when_app_crash.html
介绍了几种当.NET程序崩溃自动创建Dump的方式。
聊一聊对一个 C# 商业程序的反反调试
//www.cnblogs.com/huangxincheng/archive/2022/11/02/16849808.html
介绍了如何对商业程序反调试机制进行破解,从而达到逆向分析的目的。
C# 9.0 添加和增强的功能【基础篇】
//www.cnblogs.com/czzj/archive/2022/11/03/16845334.html
介绍了在C# 9.0中添加的新的语法和功能。
.NET性能系列文章二:Newtonsoft.Json vs. System.Text.Json
//www.cnblogs.com/InCerry/archive/2022/10/31/net-performance-series-2-newtonsoft-vs-system-text-json-2bf43e037db0.html
比较Newtonsoft.Json和System.Text.Json的性能,System.Text.Json的性能是否已经超越了其它Json序列化库。
为.NET应用添加截图功能
//mp.weixin.qq.com/s/wEzPwThrcfnDlx8C_8aLAQ
本文介绍了 .NET 实现截图功能的思路和过程,如果你仅想了解最后的解决方案,可以直接查看文章末尾。
C# 的 async/await 其实是stackless coroutine
//mp.weixin.qq.com/s/LMlR9W1KRHfj58xqkOkmfA
和大家聊一聊关于.NET无栈协程的事情。
主题
议程 – .NET Conf 2022
2022年dotnetconf大会的举办时间为11月8日晚(中国时间)至11月11日。
NET Conf 2022回顾活动东京~微软日本社区活动之旅系列 – 微软活动
//msevents.microsoft.com/event?id=3219140458
NET Conf 2022回顾活动将于12月6日星期二在东京举行。 该活动将在微软日本总部举行,可免费参加。
在2022年的国际互联网大会上,晚上的会议将包括一个招待会、”询问发言人 “和社区的闪电讲座。
在.NET会议学生区创建你的.NET投资组合 – .NET博客
//devblogs.microsoft.com/dotnet/dotnet-conf-2022-student-zone/
.NET学生区,是在.NET大会上为学生提供的直播活动。
在.NET学生区,你可以了解到关于.NET的各种信息。 .NET Conf学生区云技能挑战赛,三名参与者(学生)将赢得SWAG(奖品)。
ASP.NET Core 7的性能改进 – .NET博客
//devblogs.microsoft.com/dotnet/performance-improvements-in-aspnet-core-7/
一篇解释.NET 7中ASP.NET Core的性能改进的文章。
它解释了各种性能改进以及基准。
- 通用服务器
- 内存池分区
- 将Windows的IO池切换到使用管理实现
- 减少连接关闭时的异常情况。
- 扩展了PoolingAsyncValueTaskMethodBuilder的应用
- HTTP/2
- 减少锁的争夺
- 增加默认窗口大小
- HTTP/3
- 改进的QPack处理
- 杂项
- SignalR
- 认证
- HttpResult
- IndexOfAny
- Filters
.NET 7在.NET MAUI中的性能改进 – .NET博客
//devblogs.microsoft.com/dotnet/dotnet-7-performance-improvements-in-dotnet-maui/
描述.NET 7中.NET MAUI性能改进的文章。
它深入研究了启动时间、应用程序大小和滚动性能方面的改进。
- 滚动和布局性能的改进
- LOLs/秒。
- 避免重复调用
View.Context
。 - 避免在
CollectionView
中调用View.Context
。 - 减少布局时的JNI调用
- 缓存RTL和黑暗模式值
- 避免在布局过程中生成 “IView[]”。
- 将RTL布局计算留给平台
- 关于 “CollectionView “的其他说明。
- 启动时的性能改进
- 安卓NDK编译器标志
DateTimeOffset.Now
。- 避免 “ColorStateList(int[][],int[])”。
- 为.NET MAUI改进AOT配置文件
- 在Java互操作性中更好的字符串比较
- 改进了XAML的编译工作
- 在Windows上默认启用ReadyToRun的功能
- 默认启用macOS上的双体系结构
- 关于
RegexOptions.Compiled
的说明。 - Mono解释器的改进
- 应用规模的改进
- 修复安卓系统中DebuggerSupport修剪器值的问题
- R8 Java Code Shrinker的改进
- 能够排除Kotlin相关的文件
- 改进泛型中的AOT输出
- 工具和文件
- 剖析.NET MAUI应用程序
- 启动时间测量
- 应用规模报告工具
- 试验或高级配置
Uno Platform 4.6: Hello .NET 7!
//platform.uno/blog/uno-platform-4-6-hello-net-7/
宣布Uno平台4.6将支持.NET 7。
文章介绍了Uno平台4.6的改进,包括对.NET 7和Visual Studio 17.4的支持、库资源、SVG支持、Android 13支持、WebAssembly Bootstrap 7.0、ASP.NET Core 介绍了托管项目。
用CoreWCF和升级助手将WCF应用程序带到最新的.NET上 – .NET博客
//devblogs.microsoft.com/dotnet/migration-wcf-to-corewcf-upgrade-assistant/
介绍用于将.NET Framework WCF项目迁移到CoreWCF的升级助手的文章。
这篇文章描述了该工具的安装和执行,以及基于一个示例项目所执行的迁移过程。 它指出,一些不支持的自动升级包括基于网络或使用.svc文件的服务、使用XML的行为配置、NetTcpBinding或不基于HTTP的绑定等。
宣布.NET社区工具包v8.1.0预览版1 – .NET博客
//devblogs.microsoft.com/dotnet/announcing-dotnet-community-toolkit-v810-preview-1/
宣布.NET社区工具包v8.1.0预览版1。
MVVM工具包源生成器支持ObservableProperty的自定义属性,优化源生成器本身,IObservable<T>
信使扩展,支持.NET 7和C# 11(Ref<T>
。NullableRef<T>
,等等)和其他各种改进。
.NET Interactive Notebooks 改名为 Polyglot Notebooks!
//devblogs.microsoft.com/dotnet/dotnet-interactive-notebooks-is-now-polyglot-notebooks/
伴随着.NET Interactive Notebooks的发展,现在改名为Polyglot Notebooks!
Visual Studio Code上的一个扩展 – .NET Interactive Notebooks,已经更名为Polyglot Notebooks。
由于对.NET Interactive Notebooks的支持增加,该名称已不再合适,因此改名为Polyglo tNotebooks。
文章、PPT等
neue cc – MemoryPack中.NET 7/C# 11代的串行器优化技术。
//neue.cc/2022/11/04_memorypack.html
文章描述了基于MemoryPack的二进制序列器实现的.NET 7 / C# 11代中的序列器优化技术。
SkiaSharp: 用SKShader进行阴影填充
//bclehmann.github.io/2022/11/05/HatchingWithSKShader.html
关于如何在SkiaSharp中使用SKShader进行填充的文章。
SkiaSharp: 用SKColourFilter进行解密
//bclehmann.github.io/2022/11/06/UnmaskingWithSKColorFilter.html
关于如何在SkiaSharp中使用SKColourFilter来改变颜色的文章。
在ASP.NET Core应用程序中使用Azure AD与多租户切换租户
//damienbod.com/2022/10/31/switch-tenants-in-an-asp-net-core-app-using-azure-ad-with-multi-tenants/
关于如何在Azure AD中切换多租户的ASP.NET Core应用程序的租户的文章。
在C#.NET中矢量类的条件分支(if…then…else) – Qiita
//qiita.com/C5D5E5/items/dd9da77e24752ff50cec
关于Vector.ConditionalSelect
的文章,当使用Vector.ConditionalSelect时,用于条件性分支。
Dotnet(.NET)WinUI、Uno和Maui应用程序的性能跟踪 – Nick的.NET旅行
//nicksnettravels.builttoroam.com/dotnet-trace/
关于如何使用dotnet-trace和dotnet-dsrouter来获得WinUI、Uno Platform和MAUI应用程序的跟踪的文章。
异步互斥 | David的博客
关于实现AsyncMutex的文章,它包装了Mutex并使其可用于async/await。
[C#]调试时需要的字节数组的十六进制转储 – Qiita
//qiita.com/amutou/items/6a0954c7bf190127f3ef
输出十六进制转储的代码,如od命令或二进制编辑器。
在C#中基本数字类型之间的计算是什么类型? – 齐塔
//qiita.com/full_deviation/items/a1e01871c33673fd66af
C#数字类型(sbyte,byte,ushort,short,uint,int…)。这篇文章研究了计算以下每种类型的组合时的结果类型。
容器化的Blazor:微软正在考虑新的客户端主机 – Visual Studio杂志
//visualstudiomagazine.com/articles/2022/11/02/blazor-docker.aspx
一篇关于使Blazor WebAssembly可容器化的讨论,与Blazor Server不同,Blazor Server是静态构建的,不需要ASP.NET Core作为方法。
.NET月报 | 2022年11月 | .NET工具博客
//blog.jetbrains.com/dotnet/2022/11/02/net-annotated-monthly-november-2022/
JetBrains的.NET相关信息汇编 2022年11月。
Visual Studio如何使用Visual Studio来构建Visual Studio – Microsoft Ignite – Session Catalogue
//ignite.microsoft.com/ja-JP/sessions/bafdbcbc-f9e3-49ed-ac0b-fd1dd8cbc155?source=sessions
关于Visual Studio背后的团队为发展Visual Studio所做的事情的会议。
有效地建立一个非常大的项目的内部运作,如Visual Studio,自动化测试和性能跟踪。
开源库
AutumnSky1010/SoundMaker: 你可以用这个库做以下内容,并把chiptune的声音导出为wave格式的文件。
//github.com/AutumnSky1010/SoundMaker
用于生成/输出类似于chiptune的音乐的库。
tompazourek/NaturalSort.Extension: 🔀 StringComparison的扩展方法,增加了对自然排序的支持(例如 “abc1”, “abc2”, “abc10″,而不是 “abc1”, “abc10”, “abc2″)。
//github.com/tompazourek/NaturalSort.Extension
Explorer文件名排序中使用的自然顺序排序的扩展库。
devlooped/avatar: 一个现代化的编译时生成的拦截/代理库
一个拦截库,通过使用Source Generator在编译时生成代理。使用源码生成器可以在不能进行IL的Emit(动态代码生成)的环境下运行。
jinek/Consolonia: 一个适用于.NET的跨平台UI框架.
在控制台实现Avalonia用户界面。
pierre3/PlantUmlClassDiagramGenerator: 这是一个生成器,用于从C#源代码中创建PlantUML的类图。
//github.com/pierre3/PlantUmlClassDiagramGenerator
基于C#源代码生成PlantUML类图的工具。
ststeiger/PdfSharpCore: 将PdfSharp库移植到.NET Core中 – 基本上删除了GDI+(只缺少GetFontData- 可以用freetype2代替)。
//github.com/ststeiger/PdfSharpCore
一个用于生成PDF的库,由PdfSharp for .NET Core修改而成。
深入理解
优化 XxHash3 性能 by xoofx · Pull Request #77756 · dotnet/runtime
//github.com/dotnet/runtime/pull/77756
XxHash3 优化的PR
添加XxHash128实现 by xoofx · Pull Request #77944 · dotnet/runtime
//github.com/dotnet/runtime/pull/77944
增加XxHash128实现的建议和PR
版权声明
- InCerry 翻译与整理 : //github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-11-07.md
- Myuki WeekRef : //github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-11-07.md
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
- 10~50字左右的标题
- 对应文章或项目网址访问链接
- 200字以内的简介,如果太长会影响阅读体验
//github.com/InCerryGit/WeekRef.NET