这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐!

国内文章

看我是如何用C#编写一个小于8KB的贪吃蛇游戏的

https://www.cnblogs.com/InCerry/p/building-a-self-contained-game-in-c-under-8-kilobytes-74c3cf60ea04.html

译者注:这是Michal Strehovský大佬的一篇文章,他目前在微软.NET Runtime团队工作,主要是负责.NET NativeAOT功能的开发。我在前几天看到这篇文章,非常喜欢,虽然它的内容稍微有点过时(还是使用的.NET Core 3.0),不过其中的一些编程技巧和思维方式很受用,特意找到Michal大佬要到了授权,翻译给大家看。

gRPC入门与实操(.NET篇)

https://www.cnblogs.com/newton/p/17033789.html

本文介绍了如何.NET中gRPC的入门和代码实践。

dotnet 代码优化 聊聊逻辑圈复杂度

https://www.cnblogs.com/lindexi/archive/2023/01/09/17038319.html

本文属于 dotnet 代码优化系列博客。相信大家都对圈复杂度这个概念很是熟悉,本文来和大家聊聊逻辑的圈复杂度。代码优化里面,一个关注的重点在于代码的逻辑复杂度。一段代码的逻辑复杂度越高,那么维护起来的难度也就越大。衡量代码的逻辑复杂度的一个维度是通过逻辑圈复杂度进行衡量。本文将告诉大家如何判断代码的逻辑圈复杂度以及一些降低圈复杂度的套路,让大家了解如何写出更好维护的代码。

dotnet 位列Linux基金会发布的 Top 30开源项目

https://mp.weixin.qq.com/s/1cevbNaCjJxGC3jT1OEcMA

如标题所示,经过Linux基金会的统计,dotnet位于Top 30的开源项目。

.NET Core + React 单点登录系统

这是基于.NET Core 3.1、React开发的开源项目,支持账号密码、手机短信、第三方登录,采用前后端分离架构的单点登录系统。

一款完全国产的基于C#语言开发的跨平台的文本解析引擎(模板引擎)

https://mp.weixin.qq.com/s/oUamKudNlELUIIIfT49OEw

大家好,我是宝弟!今天给大家分享一款完全国产的基于C#语言开发的跨平台的文本解析引擎(模板引擎)JNTemplate,它能生成任何基于文本的内容,包括且不限于html,xml,css等,让前端展示与后端代码逻辑分离。同时,它也提供了一个在WebForm与Razor之外的选择!

Blazor WebAssembly的初次访问慢的优化

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

.Net6在Docker环境下操作Selenium.Chrome的那些坑

https://mp.weixin.qq.com/s/y-s-_G7tbNhT0xRG8cl1Bg

本文介绍了如何.Net6中实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图,另外还有遇到的一些问题。

.NET7 一个实用功能-中央包管理

https://mp.weixin.qq.com/s/H8ysc3_DOfl5zUoeFDVOgw

依赖管理是 NuGet 的核心功能。Nuget管理单个项目的依赖关系很容易,只需要每个项目维护自己的Nuget依赖与对应版本。在您管理许多不同项目的公共依赖项的情况下,您可以利用 NuGet 的中央包管理功能从一个位置轻松完成所有这些工作。

2022年github上Stars排名前十的.NET开源项目

https://mp.weixin.qq.com/s/IWTp0u43uHNf4Cz2riXaoQ

2023年已经开始了,在2022年从事.NET开发的你有什么收获呢?在过去的2022年里面,GitHub最受欢迎、Stars最多的项目分别是哪些呢?今天我们分享一下github上Stars排名前十的非官方.NET开源项目。

8KB的C#贪吃蛇游戏热点答疑和.NET7版本

https://mp.weixin.qq.com/s/Zedkai4YpSEmT9BKUTe0qg

在之前的一篇文章《看我是如何用C#编写一个小于8KB的贪吃蛇游戏》中,介绍了在.NET Core 3.0的环境下如何将贪吃蛇游戏降低到8KB。不过也有很多小伙伴提出了一些疑问和看法,本文一一为大家解答这些问题。

主题

【英文】.NET 2023年1月更新 .NET 7.0.2, .NET 6.0.13 - .NET博客

https://devblogs.microsoft.com/dotnet/january-2023-updates/

.NET 7.0.2和.NET 6.0.13已经发布。

该版本修复了.NET 6中的一个DoS漏洞。 该漏洞允许通过向已发布的端点发送恶意请求,造成堆栈溢出,从而进行拒绝服务攻击。

【英文】ReSharper 2023.1开始公测 | .NET工具博客

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++支持。

【英文】Rider 2023.1开始公测 | .NET工具博客

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的快速模式支持,对#regionSpan的快速修复。 SequenceEquel重写为is,代码检查的改进,以及主工具栏的UI修复。

【英文】Visual Studio 2022 17.5 Preview 3来了!

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-5-preview-3-is-here/

Visual Studio 2022 17.5 Preview 3现已发布。

  • 通用IDE Shell、Git、编辑器、调试器、诊断器

    • 无障碍检查器
    • 拼写检查器
    • 改进了外部源码的调试
      • 改进反编译性能
    • Markdown成为默认编辑器
    • VS 基于意图的建议
    • 使用Microsoft.Data.SQL.Client连接到SQLServer
  • 迄今为止,在美国,有很多人都在使用".NET "这个名字。
  • C++
    • 支持对括号的着色
    • 在终端打开开发容器(devcontainer)。
  • 设置
    • 改进winget中的Visual Studio包

【英文】发布.NET社区工具包8.1!更好、更快的MVVM源码生成器,对.NET 7的支持,以及更多

https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-810/

.NET社区工具包8.1已经发布。

ObservableProperty的自定义属性,MVVM工具包分析器,MVVM工具包源生成器优化,IObservable<T>信使扩展,.NET 7和C# 11支持。

【英文】MinBZK/woo-besluit-broncode-digid-app

https://github.com/MinBZK/woo-besluit-broncode-digid-app

一个名为DigiD的荷兰应用程序已被作为开放源代码发布。 (这是一个全国性的应用,似乎是政府透明度维护活动的一部分)。

该应用程序有1500万活跃用户,是用Xamarin.Forms制作的。

【英文】dotnet/maui 7.0.58版服务版本2

https://github.com/dotnet/maui/releases/tag/7.0.58

.NET MAUI 7.0.58服务版本2已经发布。

该版本修复了各种错误并更新了Windows App SDK。

【英文】.NET框架1月2023日累积更新预览 - .NET博客

https://devblogs.microsoft.com/dotnet/dotnet-framework-january-2023-update/

.NET框架的2023年1月累积更新预览已经发布。

该版本修复了几个WPF的错误和Socket的一个罕见问题。

【英文】Visual Studio拼写检查器预览版现已发布 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/visual-studio-spell-checker-preview-now-available/

对Visual Studio预览版中现在可用的拼写检查器的介绍。

这篇文章介绍了如何使用拼写检查器,它检查哪些模式以及如何定制它。

文章、幻灯片等

【日文】[C# 12候选特性] IEnumerable的列表模式

https://ufcpp.net/blog/2023/1/list-pattern-enumerable/

C# 12 IEnumerable的候选列表模式匹配。

【日文】[C# 12候选特性] 半自动属性

https://ufcpp.net/blog/2023/1/semi-auto-property

本文介绍了C#12候选半自动属性(只有后援字段是自动生成的)。

它还解释了初始化器和它们被覆盖时的行为。

【英文】初学者指南,开始使用C#中的智能合约

https://dev.to/satyakarki/beginners-guide-to-get-started-with-smart-contract-in-c-3c7e

介绍使用Stratis实现智能合约,这是一个允许用C#实现智能合约的平台。

【英文】.NET Native AOT

https://ericsink.com/native_aot/index.html

该系列文章涉及关于Native AOT的解释和示例代码。

【英文】2022年在C#项目中发现的十大错误

https://pvs-studio.com/en/blog/posts/csharp/1020/

由PVS-Studio开发人员发现并报告的2022年开源项目中发现的十大错误汇编。

【英文】利用.NET UserSecrets来保护敏感信息 | .NET工具博客

https://blog.jetbrains.com/dotnet/2023/01/17/securing-sensitive-information-with-net-user-secrets/

介绍如何使用.NET UserSecrets在本地存储敏感信息并从你的应用程序中使用它。

使用JetBrains Rider的.NET用户秘密以及如何从你的应用程序中管理和使用它们。

【英文】新:Visual Studio中更好的搜索 - Visual Studio博客

https://devblogs.microsoft.com/visualstudio/new-better-search-in-visual-studio/

对Visual Studio中预览的新的一体式搜索的介绍。

【英文】用ASP.NET Core 7.0进行速率限制

https://medium.com/abp-community/rate-limiting-with-asp-net-core-7-0-e7834a94b8c5

介绍.NET 7中的速率限制API以及如何在ASP.NET Core中使用它。

【英文】探索最小化API的模型绑定逻辑:最小化API的幕后 - 第三部分

https://andrewlock.net/behind-the-scenes-of-minimal-apis-3-exploring-the-model-binding-logic-of-minimal-apis/

探索最小化API的模型绑定逻辑:最小化API的幕后故事--第395部分。

这篇文章解释了如何将收到的请求与处理程序参数绑定的机制和流程。

【英文】用ASP.NET Core进行多文件拖放上传|Khalid Abuhakmeh

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接收的对象的有效载荷的解释。

【英文】学习 DateOnly & TimeOnly

https://dev.to/karenpayneoregon/learn-dateonly-timeonly-23j0

介绍DateOnly和TimeOnly的基础知识,以及它们在Json.NET、System.Text等库中的支持。

【日文】PropertyChangedEventManager在线程池中失败 - Qiita

https://qiita.com/emoacht/items/3f7e216b43431e960751

关于PropertyChangedEventManager``AddListener/RemoveListener必须从同一个线程调用。

【日文】[C#] 创建并理解你自己的字典(HashTable)

https://zenn.dev/fugi/articles/d2a5ef35e4190f

试图实现类似Dictionary的结构,并了解如何处理哈希值。

【日文】[C#] 异步主函数,不允许线程使用STA

https://zenn.dev/nin_neko/articles/6f08f2fdace43f

关于以及如何处理当入口点有STAThread属性但却是async Task的异步方法时,线程单位没有被设置为STA。

【日文】[.NET] 你可以在配置文件(如appsettings.json)中写注释 - Qiita

https://qiita.com/yaju/items/35d94a20e8e3e8ca268c

Microsoft.Extensions.Configuration.Json(例如appsettings.json)关于允许在JSON中写JavaScript或C#风格的注释。

【日文】在ASP.NET Core中创建自定义验证属性 - Qiita

https://qiita.com/gushwell/items/d659027304645b30b805

如何在ASP.NET Core中用ValidationAttribute实现自定义验证属性。

【日文】在.NET中委托性能的演变

https://medium.com/@skyake/the-evolution-of-delegate-performance-in-net-c8f23572b8b1

.NET 7中PGO的委托优化解析。

【英文】用.NET工作器服务在GitHub上跟踪你的编码进度

https://dev.to/sannae/track-my-coding-progress-on-github-with-a-net-worker-service-49g4

一个如何实现工作者服务的例子,以跟踪GitHub上存储库的语言统计数据。

【日文】将using alias用于任意类型

https://ufcpp.net/blog/2023/1/using-alias-any-types/

对通过 "使用"来扩展别名可以定义的内容的建议进行评论。

【英文】用BenchmarkDotNet对Linux上的.NET进行分析

https://adamsitnik.com/PerfCollectProfiler/

如何在Linux上用BenchmarkDotNet对.NET进行剖析。

0.13.3中引入的PerfCollectProfiler插件允许将剖析结果以PerfView、SpeedScope和任何支持perf文件的工具所能打开的格式导出。

开源库、资源库、工具

【英文】Dots - 友好的.NET SDK管理器 - Johnnys.News

https://johnnys.news/2023/01/Dots-a-dotnet-SDK-manager

一个用于安装和卸载各种.NET SDK的GUI工具。

【英文】VeloxDB/VeloxDB: 一个面向对象的数据库,用于用.NET和C#构建下一代的解决方案

https://github.com/VeloxDB/VeloxDB

一个用C#编写的面向对象的数据库,适用于.NET平台。

【英文】otterkit/otterkit: Otterkit COBOL编译器

https://github.com/otterkit/otterkit

为.NET平台提供ISO COBOL 2022的编译器和运行时实现。

【英文】StableDiffusionDiscordBot

https://stablediffusiondiscordbot.azurewebsites.net/

Discord Bot和它的网站,用于用稳定扩散的AI图像生成,等等。

【英文】Marplex/WpfSnowfall: 完全可定制的WPF降雪控件

https://github.com/Marplex/WpfSnowfall

一个允许你在你的WPF应用程序中进行降雪的控件。

网站、文件等

【英文】NuGet包验证控制 - .NET | 微软学习

https://learn.microsoft.com/ja-jp/dotnet/fundamentals/package-validation/baseline-version-validator

描述了在.NET 6及以后版本中引入的NuGet包验证功能。

它可以检测到从创建NuGet包时指定的基线版本对API的破坏性变化。

【英文】ML.NET教程|10分钟内入门|.NET

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或者在我的微信公众号私信。

格式如下:

  • 10~50字左右的标题
  • 对应文章或项目网址访问链接
  • 200字以内的简介,如果太长会影响阅读体验

https://github.com/InCerryGit/.NET-Weekly

.NET性能优化交流群

相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:

  • 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
  • .NET框架底层原理的实现,如垃圾回收器、JIT等等
  • 如何编写高性能的.NET代码,哪些地方存在性能陷阱****

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。目前一群已满,现在开放二群。

如果提示已经达到200人,可以加我微信,我拉你进群: ls1075

另外也创建了QQ群,群号: 687779078,欢迎大家加入。

.NET周报【1月第3期 2023-01-20】的更多相关文章

  1. .NET周报【10月第3期 2022-10-25】

    国内文章 聊一聊被 .NET程序员 遗忘的 COM 组件 https://www.cnblogs.com/huangxincheng/p/16799234.html 将Windows编程中经典的COM ...

  2. .NET周报【11月第1期 2022-11-07】

    国内文章 开源·安全·赋能 - .NET Conf China 2022 https://mp.weixin.qq.com/s/_tYpfPeQgyEGsnR4vVLzHg .NET Conf Chi ...

  3. .NET周报【10月第1期 2022-10-11】

    本周精选 继C#实现await/async无栈协程几年后,davidwrighton实现了.NET绿色线程(有栈协程)的原型 https://github.com/dotnet/runtimelab/ ...

  4. .NET周报【10月第2期 2022-10-17】

    主题 宣布 .NET 7 发布候选版本 2 - .NET Blog https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-2/ .N ...

  5. 七牛云 GO 语言周报【七月第 2 期】

    全世界有多少 Gopher? 上周的周报中,我们介绍了 Go 语言的排名已经进入到前十.那么世界上到底有多少 Gopher 呢? 作者列出了以下计算公式: Gopher 数量 = 全世界的开发者数量 ...

  6. F#周报2019年第11期

    新闻 Bolero:WebAssembly中的F# 尝试WebAssembly里的F# JetBrains的fsharp-support 2019.1 ML.NET 0.11发布 Outreachy内 ...

  7. F#周报2019年第16期

    新闻 Ionide试验版本 FSharp路线图介绍 Blazor官方预览 .NET Framework 4.8发布 .NET Core 3 Preview 4发布 需要来自FSharp.Data.Sq ...

  8. F#周报2019年第7期

    新闻 Visual Studio 2019预览版3,F#性能修复 Bolero 0.3发布,HTML模版热加载 Fantomas在线升级至Fantomas 2.9.2 使用F#开发的随机访问Excel ...

  9. F#周报2019年第17期

    新闻 .NET版本的Apache Spark Apache Spark预览版介绍 F# Apache Spark示例 微软Build 2019大会(5月6日至8日) Rider用于F#的解决方案内的重 ...

  10. F#周报2018年第51期

    新闻 有经验的开发者选择F# 2018年10佳技术讲话 试用F#开发WebAssembly Fable.Remoting: 刷新访问令牌 F#开发WebAssembly现在可以使用代码补全 Rider ...

随机推荐

  1. 深度优先搜索(Depth-First-Search)dfs代码模板

    void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据需求添加 return; } if(越界或者是不合法状态) return; if(特殊状态)//剪枝,去除一些不需 ...

  2. Java 19 新功能介绍

    点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Java 19 在2022 年 9 ...

  3. 使用canvas 根据角度画圆弧

    最近收到一个需求,根据角度在平面上画出对应的区域,实际就是 以固定的原点,根据起始角度和结束角度和半径,画出他的区域. 写了一小段,试试 export class Draw {   construct ...

  4. Python用yield form 实现异步协程爬虫

    很古老的用法了,现在大多用的aiohttp库实现,这篇记录仅仅用做个人的协程底层实现的学习. 争取用看得懂的字来描述问题. 1.什么是yield 如果还没有怎么用过的话,直接把yield看做成一种特殊 ...

  5. 基于python的数学建模---场线与数值解(微分方程)

    import numpy as np from scipy import integrate import matplotlib.pyplot as plt import sympy def plot ...

  6. 使用 Bytebase 管理 Rainbond 上的应用数据库

    在应用的发布过程中数据库的结构变更一直是最复杂也是风险最大的环节,而 Bytebase 可以对这一过程进行全生命周期的管理.在 Rainbond 中安装 Bytebase,轻松管理部署在 Rainbo ...

  7. <二>派生类的构造过程

    派生类从继承可以继承来所有的成员(变量和方法) 除了构造函数和析构函数 派生类怎么初始化从基类继承来的成员变量的呢?通过调用基类的构造函数来初始化 派生类的构造函数和析构函数,负责初始化和清理派生类部 ...

  8. Clickhouse表引擎之MergeTree

    1.概述 在Clickhouse中有多种表引擎,不同的表引擎拥有不同的功能,它直接决定了数据如何读写.是否能够并发读写.是否支持索引.数据是否可备份等等.本篇博客笔者将为大家介绍Clickhouse中 ...

  9. MISC中的图片修改宽高问题

    在做CTF中MISC分类题目时,很常见的一个问题就是修改图片正确的宽与高 (此篇笔记中的内容以ctfshow中MISC入门分类为切入点,感兴趣的同学可以一边做一边有不会的看看,仅供参考,我是菜鸡) 曾 ...

  10. CLion和动态链接库

    目录 生成链接库 链接库的使用 生成链接库 创建一个library项目 在项目中写好自己的代码 cmakelist cmake_minimum_required(VERSION 3.21) proje ...