.NET周刊【9月第4期 2024-09-22】

国内文章

.NET常见的几种项目架构模式,你知道几种?(附带使用情况投票)

https://www.cnblogs.com/Can-daydayup/p/18421685

文章介绍了软件项目的几种架构模式,包括三层架构、MVC、DDD、整洁架构和CQRS。这些模式通过分层职责,分别处理表示、业务逻辑和数据访问等功能,强调系统的可维护性、可扩展性和灵活性。每种模式有其特定的使用场景,应根据项目需求选择。附有相关参考资料链接,还介绍了DotNetGuide技术社区,提供.NET相关资源和交流平台。

.net8 使用JWT鉴权(附当前源码)

https://www.cnblogs.com/cyzf/p/18417965

文章介绍OverallAuth2.0系统的设置和使用,包括安装Jwt包及配置、创建jwt解析模型、Jwt和AppSettings插件。该系统结合.net core 8和Swagger,具备权限管理和可视化流程管理功能,适用于新手和老手。作者提供了详细的步骤和代码示例,方便读者理解和实现。文章适合对.net技术、权限管理、jwt认证有兴趣的读者。使用Jwt进行身份验证,并通过解析模型、插件配置实现功能。

.NET全局静态可访问IServiceProvider(支持Blazor)

https://www.cnblogs.com/nigture/p/18412772

DependencyInjection.StaticAccessor解决了静态方法访问DI容器的问题,特别针对Scoped服务生存期。以前的解决方案Rougamo可以应用在静态方法上,但此包提供了更通用的解决方案。通过引入NuGet包并使用简单初始化,即可在静态环境中访问Scoped对象。文章提供了详细的实现步骤,说明了在不同项目类型如WebAPI、MVC和Blazor中的使用方法。特别针对Blazor,考虑到其特殊Scope场景,提供了详细的初始化步骤和使用指导。版本管理遵循SemVer格式,与Microsoft.Extensions.*包兼容。此外,作者提醒Blazor包仅支持.NET8.0版本,并支持用户提交低版本需求的issue。

示例项目dotnet/eshop 和 dotnet/eshopsupport

https://www.cnblogs.com/shanyou/p/18417597

dotnet/eshop 是基于 .NET Aspire 的电商应用,展示服务架构及现代在线购物平台的应用,包含产品目录、购物车、订单管理等功能,支持多平台和微服务架构。dotnet/eshopsupport 展示在 .NET 中集成 AI 技术的电商应用,专注客户支持,两个项目都使用 .NET 8 和需要 Visual Studio 2022 17.9 版本支持。

C# + WPF 音频播放器 界面优雅,体验良好

https://www.cnblogs.com/1312mn/p/18416419

本文介绍了一款使用 C# 和 WPF 开发的音频播放器,功能丰富,支持多种音频格式和多语言切换。核心技术采用 FFmpeg,项目在 GitHub 上颇受欢迎。该播放器界面简洁,自带动画效果,支持歌词滚动和多种模式切换。提供绿色便携版和可安装版,仅支持 Windows。用户可下载源代码进行学习,提升编程技能。更多信息可访问 GitHub 项目页面。

.NET 开源工业级移动端仓库管理系统

https://www.cnblogs.com/1312mn/p/18408636

SmoWMS 是基于.NET 框架开发的移动仓库管理系统。它提供入库、出库、订单管理、调拨、盘点等功能,实现扫码、RFID等常见场景。系统使用 Visual Studio 和 Smobiler 开发平台,支持 Android 和 iOS 部署。用户可以管理资产、客户、供应商等信息,并进行详细的数据分析。系统支持多种版本的运行环境,提供详细的开发和使用文档。

升讯威在线客服系统如何高性能同时支持 MySQL 和 SQL Server

https://www.cnblogs.com/sheng_chao/p/18420385

升讯威在线客服与营销系统基于.net core/WPF开发,是开放、开源的产品,支持SQL Server和MySQL。文章介绍了PLINQ的并行查询技术,这种技术利用系统处理器,将数据分区并在多个线程上并行执行查询,提升性能。然而,并行可能引入复杂性,未必总是较快。PLINQ性能受计算成本、逻辑内核数量、操作种类等因素影响。并行度越高,性能提升越明显。合并选项和执行模式也对性能有影响。这些需要在不同内核的计算机上进行性能测试。

.NET 7+Angular 4 轻量级新零售进销存系统

https://www.cnblogs.com/1312mn/p/18417365

文章介绍了一款针对新零售快消行业设计的进销存管理系统,Dorisoy.POS,基于.NET 7和Angular 4开发。系统具有先进的库存管理和高性能的轻量级POS功能,确保用户流畅操作。主要功能包括客户、产品、供应商管理,以及采购和销售订单管理,支持库存自动化和手动调整。系统还具备多语言支持、用户和权限管理,以及高性能的页面加载。项目使用.NET 6 SDK,兼容SQL Server和MySQL,部署需通过Visual Studio 2022进行配置和运行。源码和工具均在GitHub上可获取。

反DDD模式之关系型数据库

https://www.cnblogs.com/xiaoweiyu/p/18417142

本文探讨了DDD思维与关系数据库三范式的差异。经验丰富的开发者常用数据库中的“关系”来映射业务模型,导致边界不清晰;而没这经验的人则易于理解“边界明确”。文章介绍了三范式的定义和目的,并指出过度依赖三范式会导致复杂的系统设计,与DDD理念相悖。使用DDD的方法虽然会产生数据冗余,但能明确划分领域,复杂度被收纳在各个边界中。现实世界中信息冗余普遍存在,如通讯录,显示信息冗余也是自然的。文章建议在模型设计时淡化三范式影响,以保持聚合之间的边界明确。

EntityFramework Core并发迁移解决方案

https://www.cnblogs.com/Tangtang1997/p/18420640

文章介绍了在EF Core与MySQL环境中,通过分库技术处理数据持久化的问题,并描述了如何实现数据库切换和表结构迁移,采用开源项目UnitOfWork进行改进。为解决多操作同步迁移时的冲突,作者设计了一种基于数据库的锁机制,避免重复迁移错误。具体方法包括创建MigrationLocks表,获取和释放锁的操作,以及提供锁的超时释放机制。

C#/.NET/.NET Core技术前沿周刊 | 第 5 期(2024年9.9-9.15)

https://www.cnblogs.com/Can-daydayup/p/18415922

这篇文章是一份C#/.NET/.NET Core技术前沿周刊的综述。内容涵盖了.NET 9性能改进、版本发布、新API、AI应用构建、Blazor Hybrid应用程序开发等多项技术动态,还涉及Entity Framework Plus扩展库、F#的稳健性、SophiApp工具和C#顶级语句等实用技术。文章还包含关于Linux环境下.NET项目内存问题的分析和WPF源代码的阅读笔记。这些内容旨在提供最新的技术进展,引导开发人员站在技术前沿。

分享3款开源、免费的Avalonia UI控件库

https://www.cnblogs.com/Can-daydayup/p/18421245

Avalonia是一个跨平台框架,让开发者在.NET环境中创建应用,支持多种平台一致的UI外观。SukiUI为AvaloniaUI提供主题控制,包括浅色和深色主题,并允许自定义。Material.Avalonia是基于Material Design的控件库,而Citrus.Avalonia提供现代风格控件。目前,这些项目都被收录到C#/.NET优秀项目中,提升开发效率和质量。项目在GitHub和Gitee上开源,欢迎提交和推荐。

C#|.net core 基础 - 扩展数组添加删除性能最好的方法

https://www.cnblogs.com/hugogoos/p/18421745

本文探讨如何实现数组元素的增加与删除,提出了四种新增方法:通过List、IEnumerable、Array、Span来实现。通过基准测试,Array的Copy方法在性能和内存使用上都表现最佳。对于删除元素,介绍了五种方法,包括通过List、IEnumerable、Array、For+List和For+标记+Copy实现。这些方法中,通过List和Array的方法较为直观,For+标记+Copy方法有创意且避免了新集合的创建。整体评估显示在效率和兼容性方面,Array的相关方法占据优势。文章最后提到希望获得更多实现建议。

Advanced .Net Debugging 11:完结篇

https://www.cnblogs.com/PatrickLiu/p/18386504

这篇文章是《Advanced .Net Debugging》系列的第十一篇,也是最后一篇。作者总结了原书的前八章内容,并选择结合原书后两章的重要内容,而不是逐节讲解,原因是后两章工具介绍过多,且工具已过时,前面章节已包含高级调试所需知识。文中提到使用Windows 10、Windbg Preview和Visual Studio 2022进行基于Net 8.0的调试。目录结构包括SOS和Visual Studio集成、Net框架源代码级调试、CLR Profiler分析器等。还涉及后台垃圾收集和线程同步。示例代码展示了一个简单的C#多线程程序。

Parquet.Net: 将 Apache Parquet 移植到 .NET

https://www.cnblogs.com/shanyou/p/18421682

Parquet.Net 是一个用于 .NET 平台的开源库,支持读取和写入 Apache Parquet 文件。它兼容 .NET 4.5 及以上版本,以及所有支持 .NET Standard 的平台,如 Windows、Linux、macOS、iOS和Android。该库通过低级和高级API提供灵活的操作,支持动态模式,将 C# 类序列化为 Parquet 文件。Parquet 格式高效存储与读取大规模数据,多用于大数据框架如 Apache Spark。Parquet.Net 尤其在全球广泛使用,包括 Azure 机器学习,并被认为是最快的 Parquet 库。它的高级API强调了列式存储与高效数据读取,低级API则需要用户定义模式以获得最佳性能。

Blazor静态服务端呈现(静态SSR)身份认证

https://www.cnblogs.com/known/p/18417236

本文介绍了如何在 Blazor 静态服务端呈现模式下实现用户登录身份认证。静态 SSR 通过生成静态 HTML 提供服务器内容。相比交互式 SSR,它避免了断线重连的问题。实现方法包括在 App.razor 文件中使用 HttpContext 获取用户登录信息,并将其传递给路由组件的级联 Context 对象。通过 HttpContext.SignInAsync 和 HttpContext.SignOutAsync 方法实现用户登录和注销功能。同时,创建了 UserInfo 和 Context 类,以及相关的 Razor 组件和控制器,实现对用户身份的管理。

OAuth2.0授权-gitee授权码模式

https://www.cnblogs.com/holyading/p/18420448

本文介绍如何使用gitee的OAuth2.0协议进行授权验证。首先创建应用,获取Client ID和Client Secret。接着对接gitee的OpenAPI设置回调地址,用vue配置路由来接收和转发授权信息。然后通过callback接口解析传递参数,取得token后调用API获取用户信息。用户注册和绑定部分检查认证用户是否已绑定项目用户。如果已绑定则返回token,否则引导注册或绑定。最后总结接入gitee的过程,并提供项目地址。

一个.NET开源、快速、低延迟的异步套接字服务器和客户端库

https://www.cnblogs.com/Can-daydayup/p/18424870

本文介绍了一个名为NetCoreServer的.NET开源库,它提供快速、低延迟的异步套接字通信,支持TCP、SSL、UDP、Unix Domain Socket、HTTP、HTTPS和WebSocket协议。该库可跨平台运行于Linux、MacOS和Windows。其设计注重高性能通信,通过优化网络I/O操作、减少内存分配和CPU占用来提升性能。功能组件包括处理TCP、SSL/TLS加密的TCP连接、UDP数据报传输和安全WebSocket通信等。示例展示了一个处理多个TCP客户端的聊天服务器,能够将收到的消息多播到所有会话。

C#|.net core 基础 - 值传递 vs 引用传递

https://www.cnblogs.com/hugogoos/p/18419656

文章讨论了在编程中变量值变化背后的原因,强调了值传递和引用传递的区别。值类型直接在栈上存储数据,而引用类型则存储在堆上。值传递时,将变量副本传递给方法,导致方法内的修改不会影响原变量。引用传递则将变量的引用传递给方法,使得方法内的修改会影响原变量。文章通过代码示例详细说明了这两者在实践中的具体表现,帮助读者理解值类型和引用类型在内存中的存储方式及其传递方式对程序行为的影响。

反DDD模式之“复用”

https://www.cnblogs.com/xiaoweiyu/p/18423776

文章探讨了复用接口与DDD之间的关系,指出复用虽然常见且令人有成就感,但长期看不利于系统的可维护性。复用会导致不同业务场景耦合,违反DDD保持明确边界的原则,因而成为反DDD模式。文章强调,根据经验,不应在不同场景中复用接口,应为每个场景创建独立的API和命令,以维持系统的可维护性。开放的DDD实战项目d3shop鼓励参与建模和代码贡献,帮助深入理解DDD实践。

大模型应用开发初探 : 通用函数调用Planner

https://www.cnblogs.com/edisonchou/p/-/quick-start-with-universal-function-caller

文章介绍了一个名为UniversalFunctionCaller的项目,用于封装大模型对话入口。它类似于ASP.NET中的Filter,通过自定义预处理和后处理方法实现横切面编程效果。在用户的prompt发送给大模型之前,该项目会读取预训练提示词以增强prompt。例如,方法GetAskFromHistory会从聊天历史中提取用户需求,并初始化一个ChatHistory,提供示范性对话,帮助大模型进行函数调用。函数调用的例子和具体实现封装在一个叫PreTrainingPlugin的内部类中,用于增强prompt。最终,该项目实现了从用户输入到大模型调用的全流程。

C#|.net core 基础 - 深拷贝的五大类N种实现方式

https://www.cnblogs.com/hugogoos/p/18424476

文章介绍了在C#中实现对象深拷贝的方法。深拷贝是指创建一个与原对象数据相同但独立的副本,通常用于确保对象之间不互相影响。文章介绍了多种深拷贝的方法,包括简单引用类型的方法(如MemberwiseClone和with表达式)、手动复制、以及使用ICloneable接口进行实现。还讨论了通过序列化方式进行拷贝的方法,如二进制、Xml和Json序列化。针对每种方法,文章提供了代码示例和使用场景的详细说明,并明确指出了方法适用的限制条件。

Wpf使用NLog将日志输出到LogViewer

https://www.cnblogs.com/sesametech-dotnet/p/18423977

LogViewer是一个通过UDP传输的高性能日志查看器,支持日志文件导入、导出和过滤。WPF项目使用Prism框架,通过NLog库将日志发送到LogViewer。配置nlog.config文件并设置依赖注入,以接收和显示不同级别的日志信息。开发者可以实时查看程序运行状态。

数字产品护照 (DPP) 解决方案:利用 Blazor 和区块链实现产品全生命周期追踪

https://www.cnblogs.com/neozhu/p/18424438

数字产品护照解决方案通过Blazor和区块链实现产品生命周期追踪,符合欧盟法规,记录材料、工艺和可持续性信息。Blazor提高开发效率,区块链确保数据安全。企业能快速定位供应链产品位置,增强品牌信誉,简化合规流程。在线演示平台提供直观体验。

主题

.NET 9 候选版本 1 现已推出 - .NET 博客

https://devblogs.microsoft.com/dotnet/dotnet-9-release-candidate-1-is-now-available/

.NET 9 候选版本 1 已发布。

  • BCL
    • WebSocket 保持活动 Ping 和超时 API
    • 添加了 ZLib、Brotli 压缩选项
    • 添加了 TarEntry.DataOffset
    • 默认情况下禁用 HttpClientFactory 的标头值日志记录
    • 进程外仪表通配符订阅
  • SDK
    • 工作负载历史记录
  • ASP.NET核心
    • 改进了 SignalR 分布式跟踪
    • WebSockets 保持活动超时
    • 中间件中的键控 DI
    • 覆盖InputNumber类型属性
    • 在 Linux 上信任 ASP.NET Core HTTPS 开发证书
  • .NET MAUI
    • 添加了 HorizontalTextAlignment.Justify

使用 OpenTelemetry 增强适用于 .NET 的 AWS 开发工具包的可观察性 |

https://aws.amazon.com/jp/blogs/developer/enhancing-observability-in-the-aws-sdk-for-net-with-opentelemetry/

适用于 .NET 3.7.400 及更高版本的 AWS 开发工具包支持的 OpenTelemetry 支持的说明。

本文介绍了如何启用和添加 OpenTelemetry 集成、支持哪些指标以及如何创建您自己的遥测提供程序。

2.8.16 版 · StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.8.14
https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.8.16

StackExchange.Redis 2.8.14、2.8.16 已发布。

此版本修复了多个错误。

GitHub 模型和 .NET:为工程师构建生成式 AI 应用程序 - .NET 博客

https://devblogs.microsoft.com/dotnet/using-github-models-and-dotnet-to-build-generative-ai-apps/

了解如何使用 .NET 中的 GitHub 模型。

本文介绍了将 Azure AI 推理 SDK 与 Phi-3 模型结合使用 GitHub 模型的示例。

适用于 .NET 和 .NET MAUI Android 应用程序的 Android 资源包 - .NET 博客

https://devblogs.microsoft.com/dotnet/android-asset-packs-in-dotnet-android/

关于构建 .NET 9 支持的 Android 资源包。

本文解释了什么是资产包、.NET 迄今为止遇到的问题将在 .NET 9 中得到解决,以及如何按需下载和调试资产包。

关于取消游戏区运行费

https://unity.com/ja/blog/unity-is-canceling-the-runtime-fee

关于取消原定在 Unity 6 及更高版本中引入的运行时费用(根据安装数量计费)。

.NET 9 中的性能改进 - .NET 博客

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-9/

通过代码和基准详细解释 .NET 9 中的各种性能改进。

Visual Studio 2022 中 SDK 样式 SQL 项目的预览版

https://techcommunity.microsoft.com/t5/azure-sql-blog/preview-release-of-sdk-style-sql-projects-in-visual-studio-2022/ba-p/4240616

在 Visual Studio 的 SQL Server Data Tools 项目中添加了对 SDK 样式项目的预览支持。

通过对 .NET 9 和本机 AOT 的预览 UWP 支持来现代化您的 UWP 应用 - #ifdef Windows

https://devblogs.microsoft.com/ifdef-windows/preview-uwp-support-for-dotnet-9-native-aot/

.NET 9 添加了对 UWP 的预览支持。

.NET 9 中对 UWP 的支持使得能够迁移到 WinUI 3,并能够从更新的 .NET Core 2.0 级别功能和 .NET Native (AOT) 运行时迁移到现代 C# 和 .NET 运行时开发。

本文还介绍了如何使用 .NET 9 创建 UWP 项目、项目文件的详细说明、F# 支持以及其他生态系统支持状态。

使用 componentize-dotnet 为 .NET/C# 开发人员简化组件

https://bytecodealliance.org/articles/simplifying-components-for-dotnet-developers-with-componentize-dotnetcomponentize-dotnet 的预览版已经发布,它允许您从 .NET 工具输出 WebAssembly 组件。

componentize-dotnet 是一个包含 NativeAOT 的 LLVM 编译器、绑定生成和 WASI SDK 的包,允许您通过简单地引用 NuGet 包来使用 dotnet build 生成 WebAssembly 组件。

  • [“componentize-dotnet”,它允许您创建与 .NET 中的 WebAssembly 最新规范“WASI Preview 2”兼容的组件,由字节码联盟开源发布](https://www.publickey1.jp/blog/24 /netweb assemblywasi_preview_2componentize-dotnetbytecode_alliance .html)

文章、幻灯片等

如何在 Arm64 设备上本机运行 .NET 应用程序 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/how-to-run-net-apps-natively-on-arm64-devices/

如何使用 Visual Studio 2022 和 Windows 11 24H2 在 Arm 环境中本地运行使用 Arm 上指定的任何 CPU 的 .NET 应用程序。

[C#] 不宜轻易使用Expression.Compile()的原因及对策 - Qiita

https://qiita.com/simoyama2323/items/8741f455292c03ed1fd9

使用 Expression.Compile 的成本是多少?

本文还介绍了当您不需要使用 Expression.Compile 时的替代方案。

了解具有抽象基类的 XAML 设计器的行为 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/understanding-the-behavior-of-the-xaml-designer-with-abstract-base-classes/

关于 Visual Studio 2022 中 XAML 设计器中使用抽象类的控件的行为。

文章阐述了使用抽象类时出现的问题及解决方案。

使用 TUnit!

https://zenn.dev/masakura/articles/e0238d7b87dedd

TUnit 简介,一个类似于 xUnit 和 NUnit 的测试框架。

.NET 9 中的新 LINQ CountBy

https://zenn.dev/tomokusaba/articles/83a3fdf6515435

CountBy 简介,在 .NET 9 的 LINQ 中引入。

C# 11.0 新功能:ref 字段和作用域关键字 | endjin

https://endjin.com/blog/2024/09/dotnet-csharp-11-ref-fields-scoped-keyword

C# 11 的 ref 和scoped 关键字的说明。

使用 JetBrains Rider 和 StrawberryShake 在 .NET 中构建 GraphQL 客户端 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2024/09/17/building-a-graphql-client-in-net-with-jetbrains-rider-and-strawberryshake/

关于使用 Rider 和 StrawberryShake 实现 GraphQL 客户端。

本文介绍了如何使用 Rider 的 GraphQL 扩展插件来高效推进 GraphQL 开发。

[LINQ] 理解 GroupJoin

https://zenn.dev/shimiyu/articles/5a01676d6165f7

有关 LINQ 的 GroupJoin 方法的行为说明。它还提到了与 SelectMany 结合使用的联接。

在 C# 中实现 Floyd-Warshall 算法来解决所有对最短路径问题

https://olegkarasik.wordpress.com/2021/04/25/implementing-floyd-warshall-algorithm-for-solving-all-pairs-shortest-paths-problem-in-c/

本书用C#实现了搜索最短路径的Floyd-Warshall算法,并解释了如何优化其实现。

可枚举集合的散布值

https://khalidabuhakmeh.com/intersperse-values-for-enumerable-collections

如何实现 Interspase 方法以在集合的元素之间添加元素。

使用 EventPipe 跟踪分配第 3 部分 — 不使用 dotnet-trace 进行跟踪

https://medium.com/@ocoanet/tracing-allocations-with-eventpipe-part-3-tracing-without-dotnet-trace-7244bdb86e03

第 3 部分介绍如何使用 EventPipe 跟踪分配。

本文介绍如何使用 DiagnosticsClient 从正在运行的会话进行跟踪、涉及的问题以及使用 dotnet-trace 的解决方案。

使用 C# .NET 8.0+Native AOT 创建控制台应用程序 - Qiita

https://qiita.com/nekotadon/items/6031ec1d90f1834e2324

说明在 .NET 8 中使用本机 AOT 构建控制台应用程序的步骤。

让我们开始使用 Semantic Kernel 的多智能体 AI 功能第 2 部分

https://zenn.dev/microsoft/articles/semantic-kernel-agents-003

阅读有关 Semantic Kernel 的 Agent 相关类及其代码的更多信息。

以 PEM 格式保存和加载 RSA 密钥对,使用 C# 加密和解密消息 [.NET 7 及更高版本支持] - Qiita

https://qiita.com/SoundOrion/items/6d4da8b6cce6b52e318d

如何使用 .NET 7 及更高版本支持的 PEM 格式 RSA 密钥加密和解密消息。

EventSource 的意外使用或如何在 CLR 拉取请求中测试统计结果

https://chnasarre.medium.com/unexpected-usage-of-eventsource-or-how-to-test-statistical-results-in-clr-pull-request-8431ffdc460a

关于使用 EventSource 在 CLR 拉取请求中测试统计结果的故事。

从 WinRT COM 接口转换为 Win32 COM 接口 - Qiita

https://qiita.com/kumakamikoubou/items/245991bb7b247da1eea8

如果需要将 WinRT 接口转换为 Win32 COM 接口,例如将 IMemoryBufferReference 转换为 IMemoryBufferByteAccess,该怎么办?

.NET 9 中字典和 HashSet 的备用查找 - NDepend 博客

https://blog.ndepend.com/alternate-lookup-for-dictionary-and-hashset-in-net-9/

它解释了 GetAlternateLookup API 的性能和独特的实现方法,该 API 已添加到 .NET 9 中的 Dictionary 和 HashSet 中。

使用 PublicApiGenerator 防止公共 API 发生重大更改

https://andrewlock.net/preventing-writing-changes-in-public-apis-with-publicapigenerator/

如何使用 PublicApiGenerator 防止对类库的公共 API 进行重大更改。

文章介绍了使用PublicApiAnalyzer时的不满以及使用PublicApiGenerator和单元测试作为替代方法的验证方法。

WebAssembly 和容器:使用 .NET Aspire 编排分布式架构

https://www.infoq.com/articles/web assembly-containers-dotnet-aspire/

引入 Fermyon.Aspire.Spin,它允许您在 .NET Aspire 上托管运行无服务器 WebAssembly 应用程序的 Spin。

尝试反编译一个值类型记录 - Qiita

https://qiita.com/abetakahiro123/items/0ea0eeaa82e6921ede87

解释值类型记录如何反编译和实现。

为什么 F# 代码如此健壮和可靠? - .NET 博客

https://devblogs.microsoft.com/dotnet/why-is-fsharp-code-so-robust-and-reliable/

关于 F# 代码的稳健性和可靠性的介绍性文章。 (访客在 .NET 博客上贡献了文章)

Visual Studio 调试器中异步用户未处理异常的中断 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/break-for-async-user-unhandled-exceptions-in-the-visual-studio-debugger/

关于在将 Visual Studio 与 .NET 9 或更高版本一起使用时中断异步处理期间发生的用户未处理异常的能力。

使用 ASP.NET Core 进行开发时使用的环境变量现在由 1Password 管理

https://zenn.dev/i999m/articles/4e613a5cc95e6b

了解在开发 ASP.NET Core 应用程序时如何使用 1Password 管理、检索和执行环境变量。

WinUI 3 中实用的窗口大小设置 - Qiita

https://qiita.com/emocht/items/e3935ebc6f713f95ed50

如何通过 WinUI 3 中的代码设置窗口大小。文章中提到了使用AppWindow.ResizeClient的具体实现方法。

学习构建您的第一个 Blazor 混合应用程序 - .NET 博客!

https://devblogs.microsoft.com/dotnet/introducing-blazor-hybrid-workshop/

介绍创建 Blazor 混合应用程序的研讨会- [dotnet-presentations/blazor-hybrid-workshop:全天研讨会(.NET MAUI Blazor Hybrid Workshop in a Box),介绍如何使用 .NET MAUI 为 iOS、Android、macOS 和 Windows 构建 Blazor 混合应用程序](https //github.com/dotnet-presentations/blazor-hybrid-workshop)

搜索范围可帮助您找到所需内容 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/search-scoping-helps-you-find-what-youre-looking-for/

如何在 Visual Studio 搜索中指定范围(解决方案、项目、文档)。

VisualStudio.Extensibility 17.11:设置和更多远程 UI 支持 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/visualstudio-extensibility-17-11-settings-and-more-remote-ui-support/

关于新的 Visual Studio 扩展性模型 VisualStudio.Extensibility 17.11 版本。

17.11 包括配置支持、远程 UI 增强、工具栏和工具窗口等的更新。

本文还介绍了项目查询 API 文档的更新以及有关实验性 API 和重大更改的决策。

我使用 ONNX Runtime 的 QNN Execution Provider 在 Snapdragon X Elite 的 NPU 上执行图像分类 - Shibayan Miscellaneous

https://blog.shibayan.jp/entry/20240911/1726041638

了解如何使用 Qualcomm AI Engine Direct SDK 和 ONNX Runtime,使用 QNN Execution Provider 在 Snapdragon X Elite 的 NPU 上执行 ResNet50 图像分类。

在 Linux 应用服务上使用 Phi-3 ONNX 运行时和 Sidecar 模式实现本地 RAG

https://azure.github.io/AppService/2024/09/03/Phi3-vector.html

如何通过运行 ONNX 运行时和 Phi-3 模型作为 sidecar 后端来在 Azure Linux 应用服务中实现本地 LAG。

C#/.NET 推荐

https://zenn.dev/tomokusaba/articles/3b1150edaafb8c

简要介绍当前的 C# 和 .NET。

活动、视频等

午休时间玩玩Semantic Kernel (2024/09/26 12:00~)

https://msdevjp.connpass.com/event/330257/

库、存储库、工具等。

prozolic/CsToml:.NET 的 TOML 解析器/序列化器

https://github.com/prozolic/CsToml

面向性能的 TOML 解析器/序列化器库。

版权声明

由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.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,欢迎大家加入。

image-20230703203249615

本文由博客一文多发平台 OpenWrite 发布!

posted @ 2024-10-09 21:05  InCerry  阅读(184)  评论(0编辑  收藏  举报