.NET周刊【9月第3期 2024-09-15】
国内文章
关于.NET在中国为什么工资低的分析
https://www.cnblogs.com/thinkingmore/p/18406244
.NET在中国开发者的薪资偏低,主要因市场需求、技术栈选择和企业文化等因素所致。历史上,.NET曾因微软的闭源策略发展受限,尽管后来推出了跨平台的.NET Core,但市场接受度仍不高,主要应用于国有企业和传统行业。与Java、Python相比,.NET在新兴领域发展滞后,社区活跃度低,限制了开发者的技术更新和职业发展。此外,互联网企业更偏好开源技术,.NET开发者在这些行业的需求和薪酬因而较低。尽管.NET技术演进提供了新机会,但市场对其反应较慢,云计算和开源支持的挑战依然存在。
.NET 9 的新亮点:AI就绪 ,拥抱她
https://www.cnblogs.com/shanyou/p/18405567
.NET 9 即将发布,重点是简化 AI 集成。开发人员可以使用 OpenAI、OSS 模型和 Azure SDK 构建智能应用。TensorFlow.NET 和 OpenAI SDK 均获升级,支持高性能和实时处理。ONNX 运行时和 ML.NET 4.0 提供无缝 AI 模型操作,辅助代码生成、NLP 工具、GPU 加速等提升了开发效率。ASP.NET Core 简化了 AI 部署,新的数值 API 实现高效运算。性能监控和模型偏差检测确保 AI 应用的可靠性和道德性。微软在云原生和 AI 领域的开放策略使 .NET 更强大。
超轻量级、支持插件的 .NET 网络通信框架
https://www.cnblogs.com/1312mn/p/18401867
TouchSocket 是一个轻量级、支持插件的网络通信库,具有 TCP、UDP、SSL、RPC 和 HTTP 等功能。其 HTTP 服务器支持 WebSocket 和其他扩展插件。TouchRPC 支持自定义协议,具备 SSL 加密和分布式调用等功能。基于 .NET 的 TouchSocket 支持多个版本和项目类型,提供兼容多种框架模型的功能。项目特点包括改进的 IOCP 模式和强大的数据处理适配器,提高性能并解决数据粘包问题。使用 Nuget 可安装 TouchSocket,并通过 TcpService 配置和管理客户端连接。
.NET 9 中 LINQ 新增的功能
https://www.cnblogs.com/Can-daydayup/p/18405683
本文介绍了LINQ,.NET 9的安装及其新增功能,尤其专注于云原生应用和性能。说明如何在VS Code中创建.NET 9应用,并提供了CountBy、AggregateBy和Index方法的示例代码。相关文章链接附于文末。
.NET 多版本 WinForm 开源控件库 SunnyUI
https://www.cnblogs.com/1312mn/p/18405542
SunnyUI.NET 是一个基于 .NET Framework 和 .NET 6、7、8 的开源 WinForm 控件库,提供丰富的控件和多页面开发框架,参考 Element 主题风格,支持多主题定制。支持国际化和多语言版本,可以使用 VS 2022 编译,或通过 Nuget 安装。控件库设计精细,包含主题管理组件,提供一致的视觉体验。
使用 Microsoft.Extensions.ServiceDiscovery 进行服务发现并调用
https://www.cnblogs.com/kklldog/p/18403778/service-discovery
在现代微服务架构中,服务发现是关键功能,通过使用 Microsoft.Extensions.ServiceDiscovery 包,.NET 提供了实现服务发现的简便方式。首先安装相应的 NuGet 包,并进行依赖注入和配置默认 HTTP 客户端。然后,在配置文件中定义服务端点,从而通过服务名进行 HTTP 调用,简化微服务间的通信。此外,还可以配置多种负载均衡策略,如轮询、随机等,提升服务调用的效率和灵活性。总之,服务发现简化了微服务间的调用过程,是实现微服务架构的重要组件。
dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件
https://www.cnblogs.com/lindexi/p/18403860
本文介绍如何在 WPF 中通过 Win32 消息循环处理 WM_POINTER 消息以实现触摸事件。文章分为两部分,首先讨论 Win32 程序中如何处理消息并获取触摸信息,然后说明 WPF 框架如何集成这些逻辑。文章详细讲述了三种处理消息的方式,并提供了代码示例。方式1使用 ptPixelLocationRaw 字段但精度较低;方式2使用 ptHimetricLocationRaw 字段以提高精度,需要额外计算坐标转换。代码示例托管在 GitHub 和 Gitee 上,提供了获取代码的命令。
Entity Framework Plus: 让 EF Core 开发如虎添翼
https://www.cnblogs.com/Can-daydayup/p/18411468
EF Core 是微软推出的轻量化、跨平台数据访问技术,支持多种数据库和LINQ查询等功能。Entity Framework Plus 是其扩展库,提供批量操作、查询缓存、审计跟踪等增强性能的特性。项目可通过 NuGet 包轻松集成,并包含多种优化功能如全局和实例查询过滤器。GitHub 上提供项目源码和在线文档。
.NET 9 RC1 正式发布,ASP.NET Core 得到完善
https://www.cnblogs.com/shanyou/p/18409073
.NET 9 RC1是即将发布的候选版本,含WebSocket API增强、新压缩选项与SignalR改进,并更新.NET MAUI。ASP.NET Core拥多项更新,如SignalR分布式跟踪及WebSocket改进。新增功能简化了AI模型部署,并具备平台独立性。HorizontalTextAlignment.Justify在.NET MAUI中实现文本水平对齐,增强了文本显示。在Ubuntu和Fedora上改善ASP.NET Core HTTPS开发证书的信任。微软继续支持云原生应用及性能优化,强调容器化和微服务架构,注重应用的扩展性和弹性。
浅谈 C# 中的顶级语句
https://www.cnblogs.com/Can-daydayup/p/18409971
C# 9引入顶级语句,允许不显式定义Main方法直接编写代码,使代码更简洁,适合简单应用、脚本和演示。虽然降低了学习难度,提高了效率,但在大型项目中,传统的代码结构仍然必要。顶级语句在复杂项目中可能引发兼容性问题。开发者应根据需求选择使用哪种方式,传统结构在大型项目中具备优势。
C#整合Ollama实现本地LLMs调用
https://www.cnblogs.com/wucy/p/18400124/csharp-ollama
近年来AIGC迅速发展,模型多样化、使用门槛降低。Ollama是一种开源的语言模型服务工具,支持多种大型语言模型,方便用户在本地PC上实验、管理和部署。Ollama简化了模型使用的过程,不论是CPU还是GPU都可以使用,算力不足则处理较慢。安装很简单,可以通过官网下载或GitHub下载,安装后可以设置环境变量来调整设置。常用命令包括列出、查看、下载和运行模型,以及通过HTTP接口调用服务。需要注意的是较大模型运行需要较高内存或显存。Ollama适用于特定场景的推理任务,但不及商业模型如ChatGPT全面。
C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
https://www.cnblogs.com/Can-daydayup/p/18405238
本文是关于C#、.NET、.NET Core相关技术的概览,包括最新文章、项目、学习资源和社区动态。重点介绍了Azure Developers - .NET Aspire Day 2024活动及其在云开发中的应用。从.NET 9中移除了BinaryFormatter,并讨论了ASP.NET Core中的防抖实现。还介绍了一些C#用户控件如流动管道和指示灯,以及使用Dependify工具处理.NET依赖关系。展示了一个.NET开源Git GUI工具和设计模式课程。Avalonia UI框架作为跨平台UI解决方案被介绍,同时探讨了Span和Substring如何提升.NET性能。最后,文章阐述了事务发件箱模式在云原生开发中的应用,及musl libc与glibc在.NET应用中的兼容性。
.NET 8 微软免费开源的 Blazor UI 组件库
https://www.cnblogs.com/1312mn/p/18404007
.NET 8 发布了微软开源的Blazor UI组件库——Fluent UI Blazor。该库为Web应用程序提供工具,确保与Microsoft产品一致的外观。Fluent UI Blazor封装了微软官方Fluent UI组件,并提供额外功能,简化开发流程。Blazor利用C#构建交互式Web应用,结合Fluent UI可创建现代UI。此库专为ASP.NET Core Blazor设计,适用于.NET 8。若使用.NET 6或7,请选用Microsoft.Fast.Components.FluentUI的v3版本。Blazor支持SPA和Web服务开发,通过C#代码操作HTML DOM,降低对JavaScript依赖。组件遵循Fluent设计,易于集成和定制,符合可访问性标准。开发可通过GitHub源码学习组件使用。
GitHub Copilot 典型使用场景实践
https://www.cnblogs.com/edisonchou/p/-/github-copilot-real-practices-in-sewc
本文讨论了GitHub Copilot在开发中的实用技巧。Copilot是一个由GitHub、OpenAI和Microsoft开发的AI工具,可在代码编写中提供建议和优化。对于.NET程序员,安装方便且能快速提高效率。在使用中,Copilot能自动生成代码、优化重复代码,并通过语义理解增强代码质量。作者强调在团队中使用统一提示词以提高Code Review效率,并利用Copilot进行代码翻译,如从COBOL转换为Python。此外,作者建议结合团队的代码标准文档,让Copilot遵循既定规范给出建议。
Entity Framework Plus: 让 EF Core 开发如虎添翼
https://www.cnblogs.com/Can-daydayup/p/18411468
Entity Framework (EF) Core 是适用于 .NET 的开源对象数据库映射器,支持多种数据库和功能扩展。Entity Framework Plus 提高了 EF Core 的性能,提供批量操作、查询缓存和审计跟踪等功能。EF Plus 支持多版本的 EF,易于通过 NuGet 集成。文中详细介绍了批量删除、更新操作的代码示例,以及查询过滤器的应用方法。项目资源和文档在 GitHub 上开源,并被纳入 C#/.NET 优秀项目中。
.NET 开源的功能强大的人脸识别 API
https://www.cnblogs.com/1312mn/p/18406833
文章介绍了一款.NET开源的人脸识别API,名为FaceRecognitionDotNet。该项目基于Python的面部识别库face_recognition,并使用OpenCVSharp和face_recognition开源库。它提供跨平台支持,包括Windows、Linux和macOS,具备预测年龄、情绪识别、性别判断、脸部标记等功能。项目在GitHub上有1.2k星标,易于集成,提供NuGet包。文末鼓励读者点赞和参与技术交流。
.net core8 使用Swagger(附当前源码)
https://www.cnblogs.com/cyzf/p/18410483
文章介绍了OverallAuth2.0权限+可视化流程管理系统的搭建和优化过程。系统采用前后端分离模式,使用.net core web api。文章详细描述了如何创建项目及优化Swagger的步骤,包括文件和类的创建、Swagger中间件的使用等。强调在控制器上添加路由和分组,确保系统正常运行并展示优化效果。最后,提供源代码地址,并邀请读者关注作者。
UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化
https://www.cnblogs.com/shanyou/p/18412887
微软正在预览对 .NET 9 的 UWP 支持,以帮助开发者利用最新的 .NET 和 Native AOT 实现应用现代化。这为希望迁移到 Windows 应用 SDK 和 WinUI 3 的开发者提供了一条更好的路径,通过分阶段迁移降低风险,提升性能。尽管 UWP 已接近被微软放弃,但通过更新底层代码和消除对 .NET Native 的依赖,开发者可以在现有平台上享受新功能。此更新吸引了许多传统 UWP 开发者,不需全面迁移即可升级到 .NET 9。微软提供的预览版虽有粗糙之处,但预计将成为开发者首选的升级方式。
Redis 入门 - C#|.NET Core客户端库六种选择
https://www.cnblogs.com/hugogoos/p/18409367
文章介绍了六款.NET系Redis客户端库:ServiceStack.Redis、StackExchange.Redis、CSRedisCore、FreeRedis、NewLife.Redis、BeetleX.Redis。ServiceStack.Redis以其丰富的功能和高性能著称,但因商业性并非首选。StackExchange.Redis性能优越,支持多节点与集群。CSRedisCore保持与redis-cli一致,支持多种Redis功能。FreeRedis在内存使用和持久化方面有所改进,功能更为全面。文章通过代码示例展示了各库的基本用法。
全能还是专精?关于技术通才与技术专家的思考
https://www.cnblogs.com/wang_yb/p/18414129
在日新月异的IT行业中,技术和框架不断更新,如前端的从jQuery到React、Vue,后端从静态架构到云和微服务。文章探讨了在如此快速迭代的环境中,应该选择成为通才还是专家。通才用广泛的知识解决多领域问题,如乔布斯、马斯克,而专家则在特定领域深入研究。合适的选择取决于个人兴趣和经验,建议在兴趣和经验中找到平衡。无论选择什么,重要的是不断学习和跨领域探索,不因困难放弃,通才和专家各有优势。
C# 开源教程带你轻松掌握数据结构与算法
https://www.cnblogs.com/1312mn/p/18408107
《Hello算法》是一本开源、免费且友好的数据结构与算法入门教程,支持多种编程语言,包括C#。教程采用动画图解,内容易懂,并提供可一键运行的源代码,帮助初学者理解算法和数据结构。项目提倡互助学习,通过评论交流提升技能。教程可在GitHub上获取,也提供在线阅读和PDF下载。
推荐3款卓越的 .NET 开源搜索组件库
https://www.cnblogs.com/Can-daydayup/p/18413806
.NET有多个优秀的开源搜索组件库。Elasticsearch .NET提供强类型请求和响应,处理HTTP连接和重试。Lucene.NET是Java Apache Lucene的移植版,为.NET提供强大的搜索和分析能力。SolrNet是针对.NET的Solr客户端库,适合了解Solr的用户。这些项目影响C#/.NET开发效率和质量,欢迎贡献。
记一次 .NET某上位机视觉程序 卡死分析
https://www.cnblogs.com/huangxincheng/p/18413420
文章描述了一位朋友的窗体程序在客户端发生卡死的情况。作者通过使用WinDbg分析dump文件来查找问题根源。分析过程中,作者利用!clrstack和!dso命令查找主线程和相关对象,发现是工作线程创建用户控件导致的问题,而该控件与DevComponents有关。文章涉及对WindowsFormsSynchronizationContext的深入分析,尝试找到创建控件的具体线程,但只发现了主线程的同步上下文,没有如预期的两个上下文,显示出dump分析的复杂性。作者强调了从线程栈的方法中寻找突破口的重要性,并简化展示了System.Windows.Forms.Control.MarshaledInvoke方法的关键部分。
WPF 实现一个吃豆豆的Loading加载动画
https://www.cnblogs.com/lvpp13/p/18412070
该文章介绍如何在.NET环境中使用expression.Drawing库,创建一个无边框透明窗口,应用圆弧控件制作加载动画。通过设置名称空间和窗口样式,实现渐变背景效果,使圆弧看起来像球体。然后在窗口中添加堆叠面板和多个圆形元素,并且使用Storyboard添加动画效果,描述控件的动态行为。
Redis 入门 - 收官
https://www.cnblogs.com/hugogoos/p/18412627
《Redis 入门》系列文章旨在帮助初学者系统学习Redis。作者通过回顾亲身经历,提供Redis基本信息、安装方法、可视化工具和五大基础数据类型等内容。文章还结合C#/.NET Core介绍了六款Redis客户端库的应用场景和使用方法,并封装了一个简单的客户端库Nuget以方便项目扩展。作者希望分享经验,帮助他人避免踩坑,提升学习效率,并计划继续发布《Redis 进阶》系列。
.NET 的 Native AOT 现在是什么样的?
https://www.cnblogs.com/shanyou/p/18415013
.NET平台一直在创新,特别是.NET Native AOT技术,这是一项前沿进步。Native AOT编译将C#代码直接编译为本机代码,不再依赖运行时JIT编译。这提升了性能,缩短启动时间,简化部署,减小应用程序大小,并增强知识产权保护。然而,它也带来了平台特定编译、部分不兼容Reflection等挑战。微软在.NET 9中重点发展Native AOT,支持老旧系统如Windows 7和XP,并计划在未来扩展到更多平台。这提高了.NET应用的执行效率和兼容性,对开发者是重要的技术升级。
使用Roslyn分析器和修复器 对异步方法规范化返回Async结尾
https://www.cnblogs.com/vipwan/p/18412585
这篇文章介绍了使用Roslyn代码修复器对异步返回方法进行规范化的过程。首先需要实现分析器,通过注册语法节点操作分析所有方法声明的语法节点。文章详细描述了创建AsyncMethodNameAnalyzer诊断程序的步骤,并定义了异步方法名称需要以Async结尾的规则。文章解释了如何根据方法的返回类型和修饰符来判断是否报告诊断问题。此外,文章展示了代码的运行逻辑以确保异步方法名符合规范。
Redis入门 - C#|.NET Core封装Nuget包
https://www.cnblogs.com/hugogoos/p/18411381
文章介绍如何封装自己的Redis C#库并打包为Nuget。作者并非开发新客户端,而是基于已有库进行简单封装以提升可测试性和解耦性。通过依赖注入增强测试能力,通过封装接口实现库间灵活切换,还有助于扩展功能。提供的示例展示如何定义接口、实现自定义方法,并以CSRedisClient为例实现接口。最终目的是提高编码效率和维护性。
VS2022 17.12.0 Preview2版本对Copilot的功能增强
https://www.cnblogs.com/vipwan/p/18408246
使用最新版17.12.0 Preview2,拥有Copilot AI订阅,可以体验改进的IEnumerable Visualizer的编辑表达功能。AI帮助实现复杂条件筛查,验证结果,提高开发和调试便利性。提供单元测试失败的信息和断点建议,比较受监视变量的值和期望值。多次验证错误时,可继续询问以获得满意的解决。调试时,可通过AI获取变量信息、修复建议和调用链分析。
dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息
https://www.cnblogs.com/lindexi/p/18123027
本文记录了我学习CPF框架的笔记,重点探讨如何在dotnet C#中获取X11的触摸信息,包括多指触摸、触摸面积和压感等。CPF框架是一个纯C# dotnet实现的跨平台UI框架,支持多个操作系统和国产化平台,设计理念类似WPF。文中详细介绍了如何使用CPF代码获取主触摸设备并注册触摸事件,并提供了相关代码示例和下载链接。本文通过实践演示了CPF框架在跨平台UI解决方案中的应用。
架构师备考的一些思考(四)
https://www.cnblogs.com/kiba/p/18410661
本文讨论了数学与计算机教育的不足,指出学生在校学习后的实践能力不足。通过案例分析强调实际经验的重要性,并探讨了数据分片与云原生架构的应用。文章提供了项目撰写与技术选择的建议,强调数据分片技术的三种类型及其对系统性能的提升作用。同时,介绍了云原生架构的四个设计原则及其在项目中的应用。技术部分涵盖了多种编程语言及工具,细致描述了系统架构与功能。最后,建议论文写作中要注重字数扩展与个人见解表达。
C# 开源教程带你轻松掌握数据结构与算法
https://www.cnblogs.com/1312mn/p/18408107
《Hello算法》是一本面向初学者的数据结构与算法教程。它支持包括C#在内的多种编程语言,采用动画图解帮助理解。代码可一键运行,提升实操能力。项目鼓励读者互动交流,实现共同学习进步。
Redis入门 - C#|.NET Core封装Nuget包
https://www.cnblogs.com/hugogoos/p/18411381
本文介绍如何封装自己的Redis C#库并打包成Nuget包。首先,通过依赖注入增强代码的可测试性和解耦性。其次,通过封装一层接口,使得使用不同的Redis客户端库变得更灵活,降低了更换成本。同时,强调封装可以扩展功能,提升Redis库的应用价值。最终,通过定义接口和自定义方法,示例展示了如何以CSRedisClient库为基础进行封装,旨在提供更便捷的Redis功能管理和扩展。
UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化
https://www.cnblogs.com/shanyou/p/18412887
微软预览支持 .NET 9 的 UWP,提供现代化应用的路径,鼓励开发者转向 Windows App SDK 和 WinUI 3。此预览仅更新工具和组件,无新特性。UWP 于 2015 年推出,微软通过 WinUI 3 和 Windows UI 库为 UWP 提供新选择。支持 .NET 9 的主要目标是为 UWP 开发者提供逐步迁移至 WinUI 3 的途径,减少对 .NET Native 的依赖,使应用现代化。此更新旨在降低迁移风险,提高性能,提高代码的现代化程度。微软希望此调整能让更多开发者升级应用至最新 .NET 和 C#,而不必全面迁移至 Windows App SDK。
WPF 实现一个吃豆豆的Loading加载动画
https://www.cnblogs.com/lvpp13/p/18412070
这篇文章介绍了如何在WPF中使用expression.Drawing库创建加载动画。先安装expression.Drawing包,然后配置窗口样式,并使用库中的圆弧控件。设置圆形渐变使其看起来像一个球体。接下来,通过StackPanel放置多个圆,并用Style设置其大小和颜色。最后,使用Storyboard为动画部分添加循环动画,使控件动态展示。
MonoDevelop 的续集dotdevelop
https://www.cnblogs.com/shanyou/p/18415351
DotDevelop 是一个基于 MonoDevelop 的跨平台 .NET IDE,专注于 Linux 支持和 GTK3 升级。尽管与原版相似,但进行了多项改进和功能扩展。随着微软关闭 Mac 版 Visual Studio IDE,DotDevelop 获得更多关注。开发者正努力使其兼容最新的 Linux 和 .NET Core 版本。它使用三星的.NET Core调试器netcoredbg,并有活跃的开发社区在 GitHub 上支持持续开发。
架构师备考的一些思考(四)
https://www.cnblogs.com/kiba/p/18410661
文章讨论数学和计算机教育的局限性,认为现阶段学习缺乏真实应用。通过案例分析,建议结合自身经验回答问题。论文部分涉及数据分片技术和云原生架构,强调项目参与及遇到的问题。详细描述智慧综合管理平台的功能与使用技术,提到利用多种技术栈实现系统功能。强调在系统中使用了具体技术如hash分片和布隆过滤以提升性能。文章建议论文写作要广泛,不能选择字数扩展性小的主题。最后,文章要求转载时需取得授权。
主题
.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 开发工具包的可观察性 |
适用于 .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 模型。
本文介绍了使用 Phi-3 模型和 Azure AI 推理 SDK 来使用 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 项目的预览版
在 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 博客
关于 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 工具博客
关于使用 Rider 和 StrawberryShake 实现 GraphQL 客户端。
本文介绍了如何使用 Rider 的 GraphQL 扩展插件高效地进行 GraphQL 开发。
[LINQ] 理解 GroupJoin
https://zenn.dev/shimiyu/articles/5a01676d6165f7
有关 LINQ 的 GroupJoin 方法的行为说明。它还提到了与 SelectMany 结合使用的连接。
在 C# 中实现 Floyd-Warshall 算法来解决所有对最短路径问题
本书用C#实现了搜索最短路径的Floyd-Warshall算法,并解释了如何优化其实现。
可枚举集合的散布值
https://khalidabuhakmeh.com/intersperse-values-for-enumerable-collections
如何实现 Interspase 方法以在集合的元素之间添加元素。
使用 EventPipe 跟踪分配第 3 部分 — 不使用 dotnet-trace 进行跟踪
第 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 拉取请求中测试统计结果
关于使用 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 博客
关于在将 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),介绍如何使用适用于 iOS、Android、macOS 和 Windows 的 .NET MAUI 构建 Blazor Hybrid 应用程序](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 博客
关于新的 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
了解如何在 ONNX Runtime 中使用 QNN Execution Provider 和 Qualcomm AI Engine Direct SDK 在 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 解析器/序列化器库。
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/.NET-Weekly
- 其余内容来自 Myuki WeekRef,由InCerry翻译(已获得授权) : https://github.com/mayuki/WeekRef.NET
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.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,欢迎大家加入。
本文由博客一文多发平台 OpenWrite 发布!