.NET周报 5月第4期 2023-05-27

Posted InCerry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET周报 5月第4期 2023-05-27相关的知识,希望对你有一定的参考价值。

国内文章

C#使用词嵌入向量与向量数据库为大语言模型(LLM)赋能长期记忆实现私域问答机器人落地之openai接口平替

https://www.cnblogs.com/gmmy/p/17430613.html

在上一篇文章中我们大致讲述了一下如何通过词嵌入向量的方式为大语言模型增加长期记忆,用于落地在私域场景的问题。其中涉及到使用openai的接口进行词嵌入向量的生成以及chat模型的调用。

使用ML.Net轻松接入AI模型!

https://www.cnblogs.com/Big-Head/p/17429185.html

这是一篇介绍如何使用 ML.Net 轻松接入 AI 模型的博客文章,文章分为四个部分,分别介绍了:

  • 使用 Visual Studio 的 Model Builder 训练和使用模型,包括选择模型类型、训练环境、数据源、评估结果和生成代码的步骤。
  • 使用 ONNX 模型进行分类预测,包括下载现有的 ONNX 模型,理解输入输出和预处理后处理的流程,以及使用 ML.Net 接入 ONNX 模型的方法。
  • 使用 ONNX 模型进行识别分割,包括下载现有的 ONNX 模型,理解输入输出和预处理后处理的流程,以及使用 ML.Net 接入 ONNX 模型的方法。
  • 其他相关内容,包括 ML.Net 的优势、适用场景、版本要求等。

文章中还提供了一些代码示例和图片展示,以及 GitHub 链接和参考资料。

[MAUI]模仿Chrome下拉标签页的交互实现

https://www.cnblogs.com/jevonsflash/p/17438596.html

今天来说说怎样在.NET MAUI 中制作一个灵动的类标签页控件,这类控件常用于页面中多个子页面的导航功能。

比如在手机版的Chrome中,当用户在网页中下拉时将出现“新建标签页”,“刷新”,“关闭标签页”三个选项,通过不间断的横向手势滑动,可以在这三个选项之间切换。选项指示器是一个带有粘滞效果的圆。

【C#/.NET】使用ASP.NET Core对象池

https://www.cnblogs.com/xuyd/p/17438313.html

使用对象池的好处主要是减少初始化/资源分配,提高性能。这一条与线程池同理,有些对象的初始化或资源分配耗时长,复用这些对象减少初始化和资源分配。比如:我有一个执行耗时约500毫秒,内存空间 2KB的任务为此创建一个新线程异步执行,而创建线程耗时1秒,内存空间占用1MB则得不偿失。

基于Expression Lambda表达式树的通用复杂动态查询构建器

https://www.cnblogs.com/ls0001/p/17395510.html

如题所示:基于Expression Lambda表达式树的通用复杂动态查询构建器,一共是5篇文章的合集,这是第一篇文章。

CSharp初体验

https://www.cnblogs.com/tsecer/p/17435695.html

这篇文章介绍了 CSharp 语言的一些语法特点和结构,例如源文件的整体结构,lambda 表达式,local function,namespace 等。文章通过分析官方文档,开源项目和语言规范,来展示 CSharp 语言的特点和优势。

记一次 .NET 某汽贸店 CPU 爆高分析

https://www.cnblogs.com/huangxincheng/p/17420753.html

上周有位朋友在 github 上向我求助,说线程都被卡住了,让我帮忙看下,时隔两年 终于有人在上面提 Issue 了,看样子这块以后可以作为求助专区来使用,既然来求助,必须得免费帮忙解决,从朋友这边拿到 dump 之后,接下来就可以分析了。

Blazor HyBrid在香橙派(Ubuntu Arm)运行的效果

https://www.cnblogs.com/hejiale010426/p/17422087.html

本文介绍了如何在 ARM 设备上使用 Blazor HyBrid 和 .NET 7 创建桌面应用。首先,需要安装一些依赖库和下载 .NET SDK 的压缩包。然后,可以使用 dotnet 命令创建一个 Blazor HyBrid 的项目模板,并修改一些配置文件。最后,可以运行 dotnet publish 命令将项目发布到 ARM 设备上,并在设备上运行应用。

C# 面向对象教程合集

https://www.cnblogs.com/BoiledYakult/p/17422301.html

作者本人编写的C#面向对象的教程,现在更新了三个章节。作者很用心,内容很丰富,非常适合初学者进行学习。

如何使用 Blazor 框架在前端浏览器中导入和导出 Excel

https://www.cnblogs.com/powertoolsteam/p/17422415.html

Blazor 是一个相对较新的框架,用于构建具有 .NET 强大功能的交互式客户端 Web UI。一个常见的用例是将现有的 Excel 文件导入 Blazor 应用程序,将电子表格数据呈现给用户,并且能够允许进行任何更改,最后将该数据导出回 Excel 文件或将其保存到数据库。

以下是在 Blazor 中导入/导出电子表格文件的步骤:

  1. 创建 SpreadJS Blazor 组件
  2. 创建 Blazor 应用程序
  3. 在 Blazor 应用程序中导入 Excel
  4. Blazor 应用程序中的 Excel 导出

基于.NetCore开源的Windows的GIF录屏工具

https://www.cnblogs.com/chingho/p/17414352.html

这是基于.Net Core + WPF 开发的、开源项目,可将屏幕截图转为 GIF 动画。它的核心功能是能够简单、快速地截取整个屏幕或者选定区域,并将其转为 GIF动画,还支持自定义 GIF 动画效果、字幕、背景音乐。

基于Quartz的可视化UI操作组件GZY.Quartz.MUI更新说明(附:在ABP中集成GZY.Quartz.MUI可视化操作组件)

https://www.cnblogs.com/GuZhenYin/p/17434965.html

总而言之,这个组件主要想做的就是:像swaggerUI一样,项目入侵量小,仅需要在Startup中注入的UI组件,时隔2年,(PS:其实陆陆续续在优化,不过没发博客).本组件又迎来了新的更新。

Simple Factory Pattern 简单工厂模式简介与 C# 示例【创建型】【设计模式来了】

https://www.cnblogs.com/czzj/p/SJMSLL_SimpleFactory.html

简单工厂模式(Simple Factory Pattern)是日常开发中常用的设计模式。其是一种简单的创建型模式,它通过一个工厂类来创建对象,客户端只需要知道如何使用工厂类,而不需要知道对象的实现细节。工厂类负责创建对象的整个生命周期,并且负责处理与具体实现有关的逻辑。

【C#】插件编程框架 MAF 开发总结

https://www.cnblogs.com/mrf2233/p/17434368.html

MEF和MEF微软官方介绍:https://learn.microsoft.com/zh-cn/dotnet/framework/mef/

MEF是轻量化的插件框架,MAF是复杂的插件框架。

因为MAF有进程隔离和程序域隔离可选。我需要插件进程隔离同时快速传递数据,最后选择了MAF。

如果不需要真正的物理隔离还是建议使用简单一点的MEF框架。

主题

【英文】微软 Build 2023

在 Microsoft Build 2023 上录制 .NET 相关会议。

【英文】发布 ILSpy 8.0 icsharpcode/ILSpy

https://github.com/icsharpcode/ILSpy/releases/tag/v8.0

ILSpy 8.0 已经发布。

它支持 C# 10 和 11 等新语言功能,并包含各种改进和修复。

此版本还从 .NET Framework 迁移到 .NET 6,并且需要 .NET 6 运行时才能运行

【英文】将 AI 的力量带入 Windows 11 – 通过 Windows Copilot 和 Dev Home 为客户和开发人员开启生产力新纪元

https://blogs.windows.com/windowsdeveloper/2023/05/23/bringing-the-power-of-ai-to-windows-11-unlocking-a-new-era-of-productivity-for-customers-and-developers-with-windows-copilot-and-dev-home/

在 Microsoft Build 2023 上宣布 Windows 11 的消费者和开发人员更新。

  • Windows Copilot
  • 必应聊天插件支持
  • 用于跨平台人工智能开发和新芯片支持的混合人工智能循环
  • 开发主页
    • 仪表板
    • 开发驱动
  • 新的 WinGet 配置
  • 适用于 Windows 终端的 GitHub Copilot X 集成
  • Windows 改进
    • 任务栏改进:取消分组、隐藏日期、结束任务
    • 支持资源管理器中的tar、7-Zip、RAR、gz等
    • 单独的 Windows 终端选项卡
  • 手臂上的窗户
    • Visual Studio 中的 .NET MAUI,Linux C++ 开发支持
    • 支持 LLVM v12、Node.js、WiX
    • 支持Qt、CMake、Bazel、OpenSSL、OpenBLAS、Python等中间件
    • 统一播放器支持
    • GCC、Flutter、PyTorch、GIMP 支持即将推出
    • 介绍其他支持的应用程序
  • 微软商店更新
    • Microsoft Store 人工智能中心
    • Microsoft Store AI 生成关键词
    • 人工智能生成的评论摘要
    • 微软商店广告的区域扩张
    • 应用程序备份和恢复

【英文】Dev Drive 和 Copy-on-Write 以提高开发人员性能 - Engineering@Microsoft

https://devblogs.microsoft.com/engineering-at-microsoft/dev-drive-and-copy-on-write-for-developer-performance/

使用 Dev Drive 和 Copy-on-Write 讨论开发性能。

Dev Drive 是一个旨在为开发人员处理文件和提高性能的驱动器。 Dev Drive 随 Windows 11 23H2 一起提供,现在已经在 Windows Insider Builds 中可用。

通过采用 ReFS 作为文件系统,Dev Drive 可以受益于 Copy-on-Write 等功能。在文章中,内测中的效果、CoW 解释、NuGet 包介绍和移动包目录中都解释了如何操作。

【英文】Windows Dev Drive 提高 Visual Studio 和 Dev Box 的性能! - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/devdrive/

讨论即将推出的 Windows Dev Drive 如何提高 Visual Studio 和 Dev Box 的性能。

使用 Dev Drive 可将性能平均提高 25%。

【英文】Rider 2023.2 EAP 2:MAUI 的热重载、重新设计的构建工具窗口、源生成器的改进等 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/05/22/rider-2023-2-eap-2/

Rider 2023.2 EAP 2 已经发布。

  • C# 更新
  • 改进的构建工具窗口
  • 适用于 MAUI 的 XAML 热重载
  • 新 UI 中的窗口着色
  • 改进的源代码生成器
  • 骑手的特征训练器
  • 设置同步插件
  • 其他改进和错误修复

【英文】Visual Studio 2022 版本 17.6.2 - Visual Studio 2022 发行说明

https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes#17.6.2

Visual Studio 2022 版本 17.6.2 已经发布。

该版本修复了一些错误。

【英文】发布 v1.4-experimental1 microsoft/WindowsAppSDK

https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.4-exp1

Windows App SDK v1.4-experimental1 发布。

此版本包含一些错误修复和实验性 API 添加和更改## 文章、幻灯片等

【英文】API 验证器:ReSharper 插件的新时代 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2023/05/26/the-api-verifier/

ReSharper 的内置机制用于在安装期间验证插件 API 和检查兼容性。

【英文】[C#] C# 中的 async/await 是如何工作的? - 尼诺的花园。

https://blog.neno.dev/entry/2023/05/27/152855

它详细解释了 C# 中的 async/await 是如何实际部署和执行的。

【英文】为 .NET 引入 Auth0 模板

https://auth0.com/blog/introducing-auth0-templates-for-dotnet/

使用 Auth0 for .NET 的模板已经发布。

提供了将 Auth0 与 ASP.NET Core 和 Blazor 结合使用的模板。

【英文】使用 Microsoft Dev Box 增强您的 Visual Studio 体验 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/turbocharge-your-visual-studio-experience-with-microsoft-dev-box/

改善 Dev Box 中的 Visual Studio 体验。

使用登录 Dev Box 的帐户自动登录 Visual Studio,即将对 Git Credentials Manager 进行改进,对 Azure Marketplace Images 进行改进等。

【英文】使用 ASP.NET Core Identity 进行经过身份验证的跨域请求

https://andrewlock.net/making-authenticated-cross-origin-requests-with-aspnetcore-identity/

使用 ASP.NET Core Identity 启用跨源身份验证请求的实现。

【英文】好的(Blazor)组件是...?

https://jonhilton.net/good-blazor-components/

关于制作好的 Blazor 组件。

它引入了诸如保持事物尽可能小、使它们可重用以及将业务逻辑保持在单独的组件中之类的东西。

【英文】使 URL 相对路径的 Visual Studio 代码片段

https://blog.ploeh.dk/2023/05/23/visual-studio-code-snippet-to-make-urls-relative/

介绍如何使用 Visual Studio Code 中的代码片段将范围选择的 URL 重写为相对路径。

【英文】如何在创建 HttpContent 时改进内存分配

https://hashnode.devindran.com/how-to-improve-memory-allocation-when-creating-httpcontent

引入一种在创建 HttpContent 时减少内存分配的方法。

文章介绍了一种使用CommunityToolkit.HighPerformance的ArrayPoolBufferWriter和ReadOnlyMemoryContent的方法和一种使用RecyclableMemoryStream的方法。

【英文】将 .NET HTTP 客户端重构为类型化 HTTP 客户端

https://timdeschryver.dev/blog/refactor-your-net-http-clients-to-typed-http-clients#refactor-to-ihttpclientfactory

关于使用 HttpClient 重构 HTTP 客户端以创建类型化客户端。

【日文】3 天的 .NET - 3 个社区联合活动

Fukuoka.NET (Fukuten)、.NET Lab 和 C# Tokyo 的联合 .NET 活动。

【英文】微软软件供应链安全之旅 - Engineering@Microsoft

https://devblogs.microsoft.com/engineering-at-microsoft/the-journey-to-secure-the-software-supply-chain-at-microsoft/

介绍 Microsoft 对软件供应链安全的承诺。

【英文】EF Core 8.0 中的可查询 PostgreSQL 数组

https://www.roji.org/queryable-pg-arrays-in-ef8

PostgreSQL 对 Entity Framework Core 8.0 中引入的可查询集合原语的支持介绍## 站点、文档等

推文

据说有一种技术可以通过包含一个空 System.Linq 类的代码来禁止 LINQ。

https://twitter.com/ufcpp/status/1661186143776325632?s=12


.NET 8 将为 Microsoft.Extensions 添加 Resilience、Compliance 和 Telemetry。

https://twitter.com/davidpine7/status/1661084920553283590?s=12

版权声明

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。

格式如下:

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

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

.NET性能优化交流群

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

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

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

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

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

.NET周报10月最后一期 2022-11-01

精选要闻

.NET 7 NativeAOT 比.NET 单文件发布文件小 80%

https://twitter.com/JamesNK/status/1584919726861737984?s=20&t=cOsB41s2cydu_Ibts4xnEw AOT GRPC 服务器应用程序比.NET 运行时自包含的单文件发布小 80%,目前只比 Go 稍大一点。

由于.NET 需要 Jit 编译,第一次请求需要编译很多代码,所以都比较耗时。通过 NativeAOT 以后,第一次请求响应时间比.NET 默认快 650%,和 Go 只相差 12%。要知道.NET 不是静态编译的平台,而且它在典型场景有着比 Go 更完善的特性和更高的性能,能在体积和第一次请求响应追上 Go 是非常不错的。不过这并不是最终结果,因为.NET NativeAOT 虽然可用,但是还未正式发布,期待后续的更新。

.NET8 新增新的 AOT 分层编译策略,DynamicPGO 可达 FullPGO 性能

.NET8 现在可以检测经常访问的 AOT 代码(并且重新 jits 它),一般来说只检测经常访问的代码 - 我们已经可以从中看到很好的好处(RPS🔼, Start-time🔽)🙃https://github.com/dotnet/runtime/pull/70941(已合并)。

image-10月第4期 10.24-10.30-221028102145262

可以看到上图中红色箭头所示,RPS 有明显提升,而 Start-time 也有明显的下降。

Silky 微服务框架

https://github.com/liuhll/silky

在.NET 平台下的微服务应用开发框架,支持微服务场景的诸多特性,如服务治理、RPC 通信、链路跟踪、分布式事务等。

介绍一个免费、开源的.NET 分布式应用框架 - MassTransit

https://www.cnblogs.com/sheng-jie/p/MassTransit-NET-Distributed-Application-Framework.html

本文着重介绍了MassTransit[1]框架。它直译公共交通, 是由Chris Patterson开发的基于消息驱动的.NET 分布式应用框架,其核心思想是借助消息来实现服务之间的松耦合异步通信,进而确保应用更高的可用性、可靠性和可扩展性。

C# RulesEngine 规则引擎:从入门到看懵

https://www.cnblogs.com/whuanle/p/16830333.html

本文介绍了微软开源的规则引擎库 RulesEngine 的特性和使用方法,其中包含很多代码实例,方便易懂。

是什么让.NET7 的 Min 和 Max 方法性能暴增了 45 倍?

https://www.cnblogs.com/InCerry/archive/2022/10/28/how_to_use_simd_improve_dotnet7_min_max_performance.html

本文就通过.NET7 中的一些 pr 带大家一起探索下.NET7 的Min()Max()方法是如何变快 45 倍的。

.NET 性能系列文章一:.NET7 的性能改进

https://www.cnblogs.com/InCerry/archive/2022/10/24/net-performance-series-1-performance-improvements-in-net-7-fb793f8f5f71.html

.NET 7 目前(17.10.2022)处于预览阶段,将于 2022 年 11 月发布。通过这个新版本,微软提供了一些大的性能改进。这篇 .NET 性能系列的第一篇文章,是关于从.NET6 到.NET7 最值得注意的性能改进。

创建.NET 程序 Dump 的几种姿势

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

本文介绍了生成一个.NET Dump 文件的多种方式。在 Windows、Linux 或 Azure 上有许多方法可以生成 Dump 文件。

TensorFlow.NET 实战 - 为.NET 开发者开启机器学习之旅

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

介绍在《TensorFlow.NET 实战 - 为.NET 开发者开启机器学习之旅》这本书 - .NET 生态上在人工智能领域有一个开源团队 SciSharp STACK ,他们为 TensorFlow 提供了 .NET Standard binding,旨在以 C#实现完整的 Tensorflow API,允许 .NET 开发人员使用跨平台的.NET Standard 框架开发、训练和部署机器学习模型。

C#实现生成 Markdown 文档目录树

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

介绍了使用 C#处理 Markdown 文档的方式和方法。

记一次 .NET 某娱乐聊天流平台 CPU 爆高分析

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

前段时间有位朋友加微信,说他的程序直接 CPU=100%,每次只能手工介入重启,让我帮忙看下到底怎么回事,哈哈,这种 CPU 打满的事故,程序员压力会非常大, 我让朋友在 CPU 高的时候抓 2 个 dump 下来,然后发给我分析。

主题

AWS App Runner 推出对 PHP、Go、.Net 和 Ruby 托管运行时的支持

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-app-runner-support-php-go-dot-net-ruby-managed-runtimes/

现在 AWS App Runner 支持多种语言的运行机制,包括.NET 和 Java。

AWS App Runner 是一个系统,允许你通过准备带有源代码的镜像或配置文件,轻松构建、部署和运行你的应用程序。作为一个运行时,ASP.NET 6 被支持,作为一个例子,一个 ASP.NET Core 应用程序可以通过以下的配置文件来构建和部署。

version: 1.0
runtime: dotnet6
build:
  commands:
    build:
      – dotnet publish -c Release -o out
run:
  command: dotnet out/HelloWorldDotNetApp.dll
  network:
    port: 5000
    env: APP_PORT
  env:
    – name: ASPNETCORE_URLS
      value: "http://*:5000"

介绍 AWS Toolkit for .NET Refactoring,一个新的 Visual Studio 扩展。

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-toolkit-net-refactoring-visual-studio-extension/

一个名为 AWS Toolkit for .NET Refactoring 的 Visual Studio 扩展已经发布。

这是一个扩展,提供了为云环境更新遗留的.NET 框架应用程序的功能。编写.NET Core/.NET,扫描依赖性和 API 使用情况,改变 IIS web.config 的代码以在 Linux 下运行,并协助部署到 AWS。

以适当的缩进方式复制 - Visual Studio Blog

https://devblogs.microsoft.com/visualstudio/copy-with-proper-indentation/

文章描述了一个实验性的 Visual Studio 扩展,允许以保持正确缩进的方式复制代码。

该扩展允许缩进,即使在复制一个嵌套代码块中间的代码块时也能保持一致。当粘贴到消息应用程序、博客等时,这可以防止只有第一行失去缩进,而其余部分过度缩进的情况。

  • Copy Nice - Visual Studio Marketplace[2]

.NET 框架 2022 年 10 月累积更新预览 - .NET Blog

https://devblogs.microsoft.com/dotnet/dotnet-framework-october-2022-cumulative-update-preview/

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

这个版本包含几个质量改进的更新,包括 WPF。

文章、幻灯片

使 AnimationEvent 对 CoreCLR 垃圾收集器安全 | Unity Blog

https://blog.unity.com/technology/making-animationevent-safe-for-the-coreclr-garbage-collector

文章介绍了在用 CoreCLR 运行 Unity 时,如何将 AnimationEvents 与 CoreCLR 的 GC 整合并运行。

包括为提高速度而使其成为 Blittable,重用 GCHandle,以及修改它们,使其在 Mono、IL2CPP 中的运行速度与 CoreCLR 相同。

在 Visual Studio 2022 中使用的扩展 - tech.guitarrapc.cóm

https://tech.guitarrapc.com/entry/2022/10/27/023608

介绍 Visual Studio 2022 中可用扩展的文章。它引入了各种扩展,从编辑器到显示构建状态等等。

Blazor Wasm 的现场演示现在可以使用 | ++C++; // 不明飞行 C 博客

https://ufcpp.net/blog/2022/10/blazorwasmdemo/

一篇关于在 Blazor WebAssembly 中整理和重做工作演示的文章。

在.NET 项目中,有 6 种方法可以在一个共同的位置设置相同的版本信息 | @jsakamoto

https://devadjust.exblog.jp/29404286/

本文介绍了从一个共同的位置设置一个解决方案中多个.NET 项目的版本信息的方法。

文章介绍了六种设置常用设置的方法。

  • Directory.Build.props

  • 进口道具。

  • 链接包含 AssemblyFileVersion 的源代码

  • 从文件中导入

  • 通过 dotnet 构建参数指定

  • 在构建时通过环境变量进行规范

OpenSearch 的.NET 客户端现在是 GA,我打算使用它。

https://zenn.dev/shimat/articles/d2ae99acaf022f

关于 Amazon OpenSearch(前身为 Elasticsearch Service)的.NET 客户端库的文章。

Elasticsearch 客户端库从 v7.14 开始就无法连接到 OpenSearch,所以一直在等待 OpenSearch 的客户端库。现在已经发布的.NET 版本的客户端库,以及它的使用和感受。

在 ASP.NET Core 6.0 中构建你自己的 OAuth 2.0 服务器和 OpenId 连接提供商

https://dev.to/mohammedahmed/build-your-own-oauth-20-server-and-openid-connect-provider-in-aspnet-core-60-1g1m

关于在.NET 6 的 ASP.NET Core 中实现自己的 OAuth 2.0 服务器和 OpenId Connect Provider 的文章。

托管指针、Span、ref 结构、C#11 ref 字段和 scoped 关键字 - NDepend

https://blog.ndepend.com/managed-pointers-span-ref-struct-c11-ref-fields-and-the-scoped-keyword

这篇文章回顾并解释了从指针到 Span、Ref 结构和字段的一切。

自动发布.Net 应用程序的版本

https://blog.antosubash.com/posts/automatic-version-and-release

关于如何使用 Versionize 工具在 GitHub Actions 中自动进行版本和发布的文章。

文章还讨论了如何使用 Husky.Net 对 Git 的 pre-commit 钩子中的注释进行提示。

学习系列:在 Visual Studio 中开始使用 GitHub

https://devblogs.microsoft.com/visualstudio/learn-github-in-visual-studio-learning-series/

一篇关于使用 Visual Studio 学习 GitHub 的电子邮件系列的介绍性文章。

LINQ 的聚合函数在.NET7 中为何如此之快的故事(或者说矢量化的难度) - Qiita

https://qiita.com/Kujiro/items/dc90366325fffcd3675d

一篇解释 LINQ 聚合函数(Sum、Max、Average)的具体实现的文章,这些函数在.NET 7 中被加速了。

Project Volterra 和 Windows 开发工具包 2023 - Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20221027/1666807751

关于 Windows 开发工具包 2023 的评论文章。

我买了 Windows 开发工具包 2023 | DevelopersIO

https://dev.classmethod.jp/articles/try-windows-dev-kit-2023-project-volterra/

一篇关于 Windows 开发工具包 2023 的评论文章,其中还讨论了像 PowerShell 和 AWS 工具如何工作。

在 Razor Pages 中与空引用类型作斗争

https://andrewlock.net/fighting-with-nullable-reference-types-in-razor-pages/

关于在 Razor Pages 中与空引用类型斗争的文章。

文章讨论了如何处理 Razor 页面,其中的值是从外部插入的,警告和不适当的抓取会增加 NullReferenceException 的可能性。文章介绍了一些建议,包括使用 C# 11 的required,这在一定程度上可以缓解。

在 C#中使用多线程的 SQLite。

https://zenn.dev/kn64872/articles/90ae674d5332a7

文章探讨了在多线程环境下使用 System.Data.SQLite 的行为。

用 Infer#杀死僵尸 "无回复 "崩溃 - .NET 博客

https://devblogs.microsoft.com/dotnet/slaying-zombie-no-repo-crashes-with-infersharp/

一篇关于使用 Infer#进行静态代码分析以检测难以发现的资源泄漏和安全问题的介绍性文章。

  • microsoft/infersharp: Infer#是一个用于 C#的跨程序和可扩展的静态代码分析器。通过 Facebook 的 Infer 的功能,这个工具可以检测到空解引用、资源泄漏和线程安全违规。它还执行污点流跟踪,以检测关键的安全漏洞,如 SQL 注入。[3]

官方发布! @dotnet 目前的版本已被重新命名为 "标准期限支持",这些变化已在网站上发布。

https://dotnet.microsoft.com/download/dotnet

目前的.NET 非 LTS 版本已被重新命名为 "标准期限支持",其变化已在网站上上线。

image-20221101190029335

图书馆、资源库、工具

corvus-dotnet/Corvus.UriTemplates: 低分配的 URI 模板解析和解决,支持 Tavis.UriTemplates API

https://github.com/corvus-dotnet/corvus.uritemplates

一个分配较少的处理 URI 模板的库(RFC 6570).

  • 低分配高性能的 C#来解决 UriTemplate 问题| endjin[4]

版权声明

  • InCerry 翻译与整理 : https://github.com/InCerryGit/WeekRef.NET/blob/master/input_zh-CN/2022/2022-11-01.md

  • Myuki WeekRef : https://github.com/mayuki/WeekRef.NET/blob/master/input/2022/2022-11-01.md

欢迎大家为.NET周报进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交issue或者在我的微信公众号私信。

格式如下:

  • 10~50 字左右的标题

  • 对应文章或项目网址访问链接

  • 200 字以内的简介,如果太长会影响阅读体验

https://github.com/InCerryGit/WeekRef.NET

参考资料

[1]

MassTransit: http://masstransit-project.com/

[2]

Copy Nice - Visual Studio Marketplace: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.CopyNice

[3]

microsoft/infersharp: Infer#是一个用于C#的跨程序和可扩展的静态代码分析器。通过Facebook的Infer的功能,这个工具可以检测到空解引用、资源泄漏和线程安全违规。它还执行污点流跟踪,以检测关键的安全漏洞,如SQL注入。: https://github.com/microsoft/infersharp

[4]

低分配高性能的C#来解决UriTemplate问题| endjin: https://endjin.com/blog/2022/10/high-performance-csharp-uritemplates

以上是关于.NET周报 5月第4期 2023-05-27的主要内容,如果未能解决你的问题,请参考以下文章

.NET周报 5月第1期 2023-05-06

.NET周报 5月第2期 2023-05-14

.NET周报 4月第2期 2023-04-08

.NET周报12月第4期 2022-12-31

.NET周报11月第4期 2022-11-30

.NET周报11月第3期 2022-11-22