{"id":59259,"date":"2025-12-30T10:05:00","date_gmt":"2025-12-30T18:05:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=59259"},"modified":"2026-01-08T10:12:15","modified_gmt":"2026-01-08T18:12:15","slug":"top-dotnet-blogs-posts-of-2025","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/top-dotnet-blogs-posts-of-2025\/","title":{"rendered":"Top .NET Blog Posts of 2025"},"content":{"rendered":"<p>2025 was a big year for .NET developers. We kicked things off with early .NET 10 previews, kept momentum with steady tooling and runtime improvements, and wrapped it all up with the launch of <strong>.NET 10<\/strong> in November.<\/p>\n<h2>\ud83d\ude80 .NET 10<\/h2>\n<p>.NET 10 was the headline event of the year: the latest <strong>Long Term Support (LTS)<\/strong> release with improvements across the runtime, SDK, libraries, languages, workloads, and tooling.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-10\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/11\/announcing-dotnet-10.webp\" alt=\"Announcing .NET 10\" \/><\/a><\/p>\n<ul>\n<li><strong>Start here:<\/strong> <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-10\/\">Announcing .NET 10<\/a> &#8211; The launch post and a map to what\u2019s new across the stack.<\/li>\n<li><strong>See how it began:<\/strong> <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-10-preview-1\/\">.NET 10 Preview 1 is now available!<\/a> &#8211; Early themes across runtime, libraries, SDK, and workloads.<\/li>\n<\/ul>\n<h2>\u26a1 Performance<\/h2>\n<p>Performance posts are one of the best ways to learn what really changed, because they come with benchmarks and code you can try yourself.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/performance-improvements-in-net-10\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/09\/net10perf.jpg\" alt=\"Performance Improvements in .NET 10\" \/><\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/performance-improvements-in-net-10\/\">Performance Improvements in .NET 10<\/a> &#8211; A deep tour through hundreds of improvements.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/preparing-for-dotnet-10-gc\/\">Preparing for the .NET 10 GC (DATAS)<\/a> &#8211; A focused read for folks tracking GC behavior and changes.<\/li>\n<\/ul>\n<h2>\ud83e\udd16 AI<\/h2>\n<p>AI reshaped day-to-day .NET workflows in 2025, from Copilot experiences to agent and tool integration patterns.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-microsoft-agent-framework-preview\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/10\/introducing-microsoft-agent-framework-preview.jpg\" alt=\"Introducing Microsoft Agent Framework (Preview)\" \/><\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-microsoft-agent-framework-preview\/\">Introducing Microsoft Agent Framework (Preview): Making AI Agents Simple for Every Developer<\/a> &#8211; A starting point for building agents in .NET.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/build-a-model-context-protocol-mcp-server-in-csharp\/\">Build a Model Context Protocol (MCP) server in C#<\/a> &#8211; Connect models to your tools and services.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/nuget-mcp-server-preview\/\">Announcing the NuGet MCP Server Preview<\/a> &#8211; Bring package context into AI-assisted workflows.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-ai-template-preview1\/\">.NET AI Template Now Available in Preview<\/a> &#8211; Scaffold an AI app quickly.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/gpt-oss-csharp-ollama\/\">GPT-OSS &#8211; A C# Guide with Ollama<\/a> &#8211; Run local models from C#.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-generative-ai-for-beginners--dotnet\/\">Announcing Generative AI for Beginners \u2013 .NET<\/a> &#8211; Learn by building small, practical examples.<\/li>\n<\/ul>\n<h2>\ud83d\udee0\ufe0f Productivity<\/h2>\n<p>Some of the most practical posts of the year were about shortening feedback loops, whether that meant better Copilot workflows or faster \u201ctry this now\u201d experiences.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/ask-mode-vs-agent-mode\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/07\/askVsAgent.jpg\" alt=\"Ask Mode vs Agent Mode\" \/><\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/ask-mode-vs-agent-mode\/\">Ask Mode vs Agent Mode &#8211; Choosing the Right Copilot Experience for .NET<\/a> &#8211; When to ask questions vs let Copilot operate on your repo.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/github-copilot-testing-for-dotnet\/\">Supercharge Your Test Coverage with GitHub Copilot Testing for .NET<\/a> &#8211; AI-assisted unit test generation directly in Visual Studio.<\/li>\n<\/ul>\n<h2>\ud83c\udf10 Aspire<\/h2>\n<p>Aspire kept leveling up in 2025, making it easier to build and operate distributed apps with first-class diagnostics.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-dotnet-aspire-93\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/05\/introducing-dotnet-aspire-93.jpg\" alt=\"Aspire 9.3: enhanced with GitHub Copilot\" \/><\/a><\/p>\n<p>If you want one Aspire post to start with, read <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-dotnet-aspire-93\/\">Aspire 9.3: enhanced with GitHub Copilot<\/a> for a clear tour of the dashboard experience and why Aspire pairs so well with modern observability.<\/p>\n<p>For ongoing Aspire updates, follow the dedicated Aspire blog at <a href=\"https:\/\/devblogs.microsoft.com\/aspire\">https:\/\/devblogs.microsoft.com\/aspire<\/a>.<\/p>\n<h2>\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1 Community<\/h2>\n<p>If you want a broader view of the platform and ecosystem beyond individual posts, catch up on .NET Conf.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-conf-2025-recap\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/12\/dotnet-conf-2025-recap-scaled.webp\" alt=\".NET Conf 2025 recap\" \/><\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-conf-2025-recap\/\">.NET Conf 2025 recap<\/a> &#8211; Sessions, announcements, and demos from .NET 10 launch week.<\/li>\n<\/ul>\n<h2>\ud83d\udce3 Announcements<\/h2>\n<p>Some of the most important posts of the year weren\u2019t about new features\u2014they were about how .NET ships, how it\u2019s supported, and how the ecosystem stays secure.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-sts-releases-supported-for-24-months\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/09\/dotnet-releases-support-scaled.jpg\" alt=\".NET STS releases supported for 24 months\" \/><\/a><\/p>\n<ul>\n<li><strong>Lifecycle:<\/strong> <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-sts-releases-supported-for-24-months\/\">.NET STS releases supported for 24 months<\/a> &#8211; Planning info for support dates and upgrade timelines.<\/li>\n<li><strong>Security:<\/strong> <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-security-group\/\">Announcing the .NET Security Group<\/a> &#8211; How ecosystem partners coordinate secure, simultaneous patch releases.<\/li>\n<\/ul>\n<h2>\ud83e\uddf0 Tooling<\/h2>\n<p>Big platform releases matter, but day-to-day workflows are shaped by tooling improvements.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-slnx-support-dotnet-cli\/\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2025\/03\/dotnet-cli-slnx.jpg\" alt=\"Introducing support for SLNX\" \/><\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/introducing-slnx-support-dotnet-cli\/\">Introducing support for SLNX, a new, simpler solution file format in the .NET CLI<\/a> &#8211; What SLNX is, how to migrate (<code>dotnet sln migrate<\/code>), and what works in the CLI today.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-run-app\/\">Announcing dotnet run app.cs: A simpler way to start with C# and .NET 10<\/a> &#8211; Run a single <code>.cs<\/code> file without a project, plus file-level directives.<\/li>\n<\/ul>\n<h2>\ud83d\ude4f Thanks for reading<\/h2>\n<p>Whether you came for .NET 10, performance deep dives, new CLI capabilities, or the wave of AI tools, thanks for building with us in 2025.<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/get.dot.net\/10\" target=\"_blank\">Download .NET 10<\/a><\/div><\/p>\n<p>Don\u2019t forget to subscribe to the blog in your favorite <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/feed\/\">RSS reader<\/a> or through <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/#subscribe_form\">e-mail notifications<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s look back at the most-read .NET blog posts published in 2025, from .NET 10 to AI, performance, and developer tooling.<\/p>\n","protected":false},"author":470,"featured_media":59260,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685,7781,7783,756,7689,3009,646,7593],"tags":[7892,8113,568,7768,51,108,7643],"class_list":["post-59259","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-ai","category-aspire","category-csharp","category-cloud-native","category-performance","category-visual-studio","category-visual-studio-code","tag-dotnet-10","tag-2025-wrapped","tag-ai","tag-aspire","tag-community","tag-performance","tag-tooling"],"acf":[],"blog_post_summary":"<p>Let&#8217;s look back at the most-read .NET blog posts published in 2025, from .NET 10 to AI, performance, and developer tooling.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/59259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/470"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=59259"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/59259\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/59260"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=59259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=59259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=59259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}