{"id":572538,"date":"2025-06-03T14:31:32","date_gmt":"2025-06-03T13:31:32","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=572538"},"modified":"2025-06-03T15:22:19","modified_gmt":"2025-06-03T14:22:19","slug":"dotinsights-june-2025","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/zh-hans\/dotnet\/2025\/06\/03\/dotinsights-june-2025","title":{"rendered":"dotInsights | June 2025"},"content":{"rendered":"\n<p><strong>Did you know?<\/strong> The Original Name of .NET Was &#8220;<a href=\"https:\/\/en.wikipedia.org\/wiki\/.NET_Framework\" target=\"_blank\" rel=\"noopener\">Next Generation Windows Services (NGWS)<\/a>&#8220;. Before Microsoft officially named it \u201c.NET,\u201d the platform was internally referred to as NGWS: Next Generation Windows Services. The name &#8220;.NET&#8221; was adopted in the late 1990s to emphasize the platform&#8217;s focus on web-based development and interoperability, as opposed to being tightly coupled to Windows-specific services.<\/p>\n\n\n\n<p>Welcome to dotInsights by JetBrains! This newsletter is the home for recent .NET and software development related information.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2559\" height=\"1439\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/06\/DN-social-BlogFeatured-1280x720-2x-1.png\" alt=\"dotInsights .NET Newsletter | June 2025\" class=\"wp-image-572895\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">? Links<\/h2>\n\n\n\n<p>Here\u2019s the latest from the developer community.<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=K9vEDkq9GIw&amp;ab_channel=CodeOpinion\" target=\"_blank\" rel=\"noopener\">Double Dispatch in DDD: When Injecting Dependencies Makes Sense<\/a> &#8211; Derek Comartin<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=isf_TnB26fQ&amp;ab_channel=EmilyBache\" target=\"_blank\" rel=\"noopener\">How to Become a Technical Coach And Carry On Coding in your Developer Career<\/a> &#8211; Emily Bache<\/li>\n\n\n\n<li><a href=\"https:\/\/www.telerik.com\/blogs\/check-out-drawingview-net-maui\" target=\"_blank\" rel=\"noopener\">Check Out the DrawingView in .NET MAUI<\/a> &#8211; Leomaris Reyes<\/li>\n\n\n\n<li><a href=\"https:\/\/steven-giesel.com\/blogPost\/53691229-fbb1-48cf-95e5-f586f9800ee1\" target=\"_blank\" rel=\"noopener\">Avoiding reflection in C# in way unsafer ways!<\/a> &#8211; Steven Giesel<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=I4sjGttgSUE&amp;ab_channel=GuiFerreira\" target=\"_blank\" rel=\"noopener\">4 Ways to Culture-Proof Your C# xUnit Tests | Never Break Your Pipeline Again!<\/a> &#8211; Gui Ferreira<\/li>\n\n\n\n<li><a href=\"https:\/\/blog.duendesoftware.com\/posts\/20250513-duende-identityserver-and-otel-metrics-traces-and-logs-in-the-net-aspire-dashboard\/\" target=\"_blank\" rel=\"noopener\">Duende IdentityServer and OTel Metrics, Traces, and Logs in the .NET Aspire Dashboard<\/a> &#8211; Khalid Abuhakmeh<\/li>\n\n\n\n<li><a href=\"https:\/\/andrewlock.net\/using-the-new-ai-template-to-create-a-chatbot-about-a-website\/\" target=\"_blank\" rel=\"noopener\">Using the new AI template to create a chatbot about a website<\/a> &#8211; Andrew Lock<\/li>\n\n\n\n<li><a href=\"https:\/\/www.woodruff.dev\/evolve-your-c-code-with-ai-a-5-week-genetic-algorithms-bootcamp-for-developers\/\" target=\"_blank\" rel=\"noopener\">Evolve your C# Code with AI: A 5 Week Genetic Algorithms Bootcamp for Developers<\/a> &#8211; Chris Woodruff<\/li>\n\n\n\n<li><a href=\"https:\/\/www.franksworld.com\/2025\/05\/01\/master-nosql-scalable-databases-for-modern-applications\" target=\"_blank\" rel=\"noopener\">Master NoSQL: Scalable Databases for Modern Applications<\/a> &#8211; Frank LaVigne<\/li>\n\n\n\n<li><a href=\"https:\/\/www.meziantou.net\/use-csharp-14-extensions-to-simplify-enum-parsing.htm\" target=\"_blank\" rel=\"noopener\">Use C# 14 extensions to simplify enum Parsing<\/a> &#8211; G\u00e9rald Barr\u00e9<\/li>\n\n\n\n<li><a href=\"https:\/\/www.syncfusion.com\/blogs\/post\/dotnet-maui-photo-gallery\" target=\"_blank\" rel=\"noopener\">Create a Beautiful Photo Gallery Using .NET MAUI Tab View and ListView<\/a> &#8211; Naveenkumar Sanjeevirayan<\/li>\n\n\n\n<li><a href=\"https:\/\/www.thoughtworks.com\/insights\/blog\/generative-ai\/model-context-protocol-beneath-hype\" target=\"_blank\" rel=\"noopener\">The Model Context Protocol: Getting beneath the hype<\/a> &#8211; Karrtik Iyer<\/li>\n\n\n\n<li><a href=\"https:\/\/www.telerik.com\/blogs\/adding-blazor-pager-data-display\" target=\"_blank\" rel=\"noopener\">Adding a Blazor Pager to Your Data Display<\/a> &#8211; H\u00e9ctor P\u00e9rez<\/li>\n\n\n\n<li><a href=\"https:\/\/developmentwithadot.blogspot.com\/2025\/05\/aspnet-core-pitfalls-action-constraint.html\" target=\"_blank\" rel=\"noopener\">ASP.NET Core Pitfalls &#8211; Action Constraint Order<\/a> &#8211; Ricardo Peres<\/li>\n\n\n\n<li><a href=\"https:\/\/visualstudiomagazine.com\/articles\/2025\/05\/20\/asynchronous-and-parallel-programming-in-csharp.aspx\" target=\"_blank\" rel=\"noopener\">Asynchronous and Parallel Programming in C#<\/a> &#8211; David Ramel<\/li>\n\n\n\n<li><a href=\"https:\/\/neuecc.medium.com\/zlinq-a-zero-allocation-linq-library-for-net-1bb0a3e5c749\" target=\"_blank\" rel=\"noopener\">\u201cZLinq\u201d, a Zero-Allocation LINQ Library for .NET<\/a> &#8211; Yoshifumi Kawai<\/li>\n\n\n\n<li><a href=\"https:\/\/www.textcontrol.com\/blog\/2025\/05\/19\/how-to-import-and-read-form-fields-from-docx-documents-in-net-on-linux\/\" target=\"_blank\" rel=\"noopener\">How to Import and Read Form Fields from DOCX Documents in .NET on Linux<\/a> &#8211; Bjoern Meyer<\/li>\n\n\n\n<li><a href=\"https:\/\/auth0.com\/blog\/how-to-migrate-users-to-auth0-a-technical-guide\/\" target=\"_blank\" rel=\"noopener\">How to Migrate Users to Auth0: A Technical Guide<\/a> &#8211; David Bolton<\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/@davidfowl\/taming-manifest-sprawl-with-aspire-1ad938379433\" target=\"_blank\" rel=\"noopener\">Taming Manifest Sprawl with Aspire<\/a> &#8211; David Fowler<\/li>\n\n\n\n<li><a href=\"https:\/\/blog.ploeh.dk\/2025\/05\/19\/song-recommendations-as-an-f-impureim-sandwich\/\" target=\"_blank\" rel=\"noopener\">Song recommendations as an F# Impureim Sandwich<\/a> &#8211; Mark Seemann<\/li>\n\n\n\n<li><a href=\"https:\/\/www.tabsoverspaces.com\/233949-nullable-bool-and-if-statement\" target=\"_blank\" rel=\"noopener\">Nullable bool and if statement<\/a> &#8211; Ji\u0159\u00ed \u010cin\u010dura<\/li>\n\n\n\n<li><a href=\"https:\/\/github.blog\/ai-and-ml\/vibe-coding-your-roadmap-to-becoming-an-ai-developer\/\" target=\"_blank\" rel=\"noopener\">Vibe coding: Your roadmap to becoming an AI developer<\/a> &#8211; Gwen Davis<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">? From our .NET Guide<\/h2>\n\n\n\n<p>Each month we feature tutorials or tips from our <a href=\"https:\/\/www.jetbrains.com\/guide\/dotnet\" target=\"_blank\" rel=\"noopener\">.NET Guide<\/a>.<\/p>\n\n\n            <div class=\"newsletter\">\n                                                            <article class=\"newsletter__post\">\n                                                                                    <img decoding=\"async\" class=\"newsletter__post-img\" src=\"https:\/\/www.jetbrains.com\/guide\/assets\/thumbnail-532f267c.png\" alt=\"Refactor to use pattern matching\">\n                                                                            <div class=\"newsletter__post-text\">\n                                                            <h3>Refactor expressions to use pattern matching<\/h3>\n                                                        <p>Use pattern matching on properties in Boolean logic for more readable and efficient code.<\/p>\n                                                            <a href=\"https:\/\/www.jetbrains.com\/guide\/dotnet\/tips\/property-pattern-matching\" class=\"btn\" target=\"_blank\" rel=\"noopener\">See more<\/a>\n                                                    <\/div>\n                    <\/article>\n                                    <article class=\"newsletter__post\">\n                                                                                    <img decoding=\"async\" class=\"newsletter__post-img\" src=\"https:\/\/www.jetbrains.com\/guide\/assets\/thumbnail-e64b60da.png\" alt=\"\">\n                                                                            <div class=\"newsletter__post-text\">\n                                                            <h3>C# Experimental Attribute<\/h3>\n                                                        <p>Mark a block of code as experimental so other developers are aware of its status.<\/p>\n                                                            <a href=\"https:\/\/www.jetbrains.com\/guide\/dotnet\/tips\/experimental-attribute\" class=\"btn\" target=\"_blank\" rel=\"noopener\">See More<\/a>\n                                                    <\/div>\n                    <\/article>\n                                    <\/div>\n    \n\n\n<h2 class=\"wp-block-heading\">\u2615 Coffee Break<\/h2>\n\n\n\n<p>Take a break to catch some fun social posts.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Trolley Problem Solved #coding #programming #javascript #python\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/qEfqjKLCwhU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"#programmer #softwaredeveloper #coding #vibecoding #tech #programmerhumor #developermemes #devmemes\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/yPSX7RtLDAM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">?\ufe0f JetBrains News<\/h2>\n\n\n\n<p>What\u2019s going on at JetBrains? Check it out here:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2025\/05\/19\/resharper-comes-to-microsoft-visual-studio-code\/\">ReSharper Comes to Microsoft Visual Studio Code: Public Preview Now Open<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/05\/jetbrains-ai-assistant-now-in-visual-studio-code\/\">JetBrains AI Assistant \u2013 Now in Visual Studio Code<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2025\/05\/22\/resharper-2025-2-eap-2-oop-mode\/\">ReSharper 2025.2 EAP 2: First Public Build with Out-of-Process Mode Support<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2025\/05\/16\/rider-2025-2-eap-1\/\">Rider 2025.2 Early Access Program Is Live!<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2025\/05\/08\/resharper-rider-2025-1-2-bug-fix\/\">ReSharper and Rider 2025.1.2 \u2013 Bug Fixes Have Landed!<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\">\u2709\ufe0f Comments? Questions? Send us an&nbsp; <a href=\"mailto:dotnet-advocates@jetbrains.com\">email<\/a>.&nbsp;<\/p>\n\n\n\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/lp\/dotinsights-monthly\/\" target=\"_blank\" rel=\"noopener\">Subscribe to dotInsights<\/a><\/p>\n","protected":false},"author":901,"featured_media":572797,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992],"tags":[8363],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/572538"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/901"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=572538"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/572538\/revisions"}],"predecessor-version":[{"id":572908,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/572538\/revisions\/572908"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/572797"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=572538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=572538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=572538"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=572538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}