{"authors":[{"name":"Martin Stühmer","url":"https://daily-devops.net/authors/martin/"},{"name":"Jendrik Brack","url":"https://daily-devops.net/authors/jendrik/"}],"description":"Recent content in Microsoft Technologies and Products on Daily DevOps \u0026 .NET","favicon":"https://daily-devops.net/images/logo_hu_6465d873dfa490cf.png","feed_url":"https://daily-devops.net/tags/microsoft/feed.json","home_page_url":"https://daily-devops.net/tags/microsoft/","icon":"https://daily-devops.net/images/logo_hu_5926de77762241ba.png","items":[{"authors":[{"name":"Martin Stühmer","url":"https://daily-devops.net/authors/martin/"}],"content_html":"\u003cp\u003e\u003cstrong\u003eMicrosoft wants you to believe .NET 10 is boring. They\u0026rsquo;re right — and that\u0026rsquo;s the best news we\u0026rsquo;ve had in years.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAfter the aggressive pace of .NET 6 through 9, Microsoft has shipped something different: a Long-Term Support release that doesn\u0026rsquo;t try to reinvent the platform. No experimental APIs. No architectural pivots. Just \u003cstrong\u003eruntime improvements, compiler optimizations, and tooling refinements\u003c/strong\u003e that production systems actually need.\u003c/p\u003e\n\u003cp\u003e.NET 10 extends support through \u003cstrong\u003eNovember 2028\u003c/strong\u003e — three full years of stability. For teams still recovering from the .NET 8 to .NET 9 migration cycle, that timeline feels like relief.\u003c/p\u003e\n\u003cp\u003eBut let\u0026rsquo;s be clear: this isn\u0026rsquo;t innovation theater. It\u0026rsquo;s \u003cstrong\u003eengineering maturity\u003c/strong\u003e. And if you\u0026rsquo;ve been chasing framework updates instead of shipping features, this LTS window is your chance to catch up.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"performance-the-jit-compiler-finally-earned-its-keep\"\u003e\u003ca href=\"/posts/dotnet-10-released/#performance-the-jit-compiler-finally-earned-its-keep\" title=\"Performance: The JIT Compiler Finally Earned Its Keep\"\u003ePerformance: The JIT Compiler Finally Earned Its Keep\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eLet\u0026rsquo;s address the elephant in the room: \u003cstrong\u003e.NET has always promised performance\u003c/strong\u003e. Every release brings benchmarks showing 10-30% improvements. And every time, production systems see\u0026hellip; \u003cem\u003e5-7%\u003c/em\u003e if you\u0026rsquo;re lucky, meaningful only in tightly controlled scenarios.\u003c/p\u003e\n\u003cp\u003e.NET 10 changes that pattern, not through magic, but through \u003cstrong\u003esurgical optimizations\u003c/strong\u003e that compound across real workloads.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"what-actually-improved\"\u003e\u003ca href=\"/posts/dotnet-10-released/#what-actually-improved\" title=\"What Actually Improved\"\u003eWhat Actually Improved\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe JIT compiler now performs \u003cstrong\u003ephysical promotion\u003c/strong\u003e of struct members — meaning fewer memory indirections and tighter cache locality. It inlines array interface calls more aggressively and applies \u003cstrong\u003eadvanced loop vectorization\u003c/strong\u003e using AVX 10.2 instructions where supported.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTranslated:\u003c/strong\u003e your hot paths get faster without code changes.\u003c/p\u003e\n\u003cp\u003eHere\u0026rsquo;s a minimal example showing the new \u003ccode\u003eSpan\u0026lt;T\u0026gt;\u003c/code\u003e conversion improvements in C# 14:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-csharp\" data-lang=\"csharp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// C# 13: Manual conversion required\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eReadOnlySpan\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003eoldWay\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003emyString\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eAsSpan\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// C# 14: Implicit conversion from string\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eReadOnlySpan\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003enewWay\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003emyString\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSubtle? Yes. But in tight loops processing text-heavy workloads, these small reductions in allocations add up.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"the-reality-check\"\u003e\u003ca href=\"/posts/dotnet-10-released/#the-reality-check\" title=\"The Reality Check\"\u003eThe Reality Check\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eDon\u0026rsquo;t expect miracles. If your API is slow because of database round-trips or inefficient queries, .NET 10 won\u0026rsquo;t fix that. But if you\u0026rsquo;re running compute-heavy services — data transformations, real-time analytics, batch processing — you\u0026rsquo;ll notice \u003cstrong\u003esmoother CPU usage and fewer GC pauses\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eWhen I migrated a few services from .NET 8 to .NET 9 last year, we measured around 7% throughput improvement on I/O-bound APIs and nearly 12% on CPU-intensive background workers. .NET 10 builds on that foundation with more predictable memory behavior and less GC jitter.\u003c/p\u003e\n\u003cp\u003eThe performance story here isn\u0026rsquo;t \u003cem\u003etwice as fast\u003c/em\u003e — it\u0026rsquo;s \u003cstrong\u003econsistently fast under load\u003c/strong\u003e. And in production, that consistency is worth more than benchmark theater.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"sdk-stability-where-net-9-stumbled-net-10-delivers\"\u003e\u003ca href=\"/posts/dotnet-10-released/#sdk-stability-where-net-9-stumbled-net-10-delivers\" title=\"SDK Stability: Where .NET 9 Stumbled, .NET 10 Delivers\"\u003eSDK Stability: Where .NET 9 Stumbled, .NET 10 Delivers\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eHere\u0026rsquo;s an uncomfortable truth: \u003cstrong\u003e.NET 9\u0026rsquo;s SDK had rough edges\u003c/strong\u003e. Workload resolution issues, inconsistent behavior between CI and local builds, and breaking changes in \u003ccode\u003edotnet publish\u003c/code\u003e that caught teams mid-sprint.\u003c/p\u003e\n\u003cp\u003eIf you migrated to .NET 9 early, you know what I\u0026rsquo;m talking about. We hit workload mismatch errors twice during our .NET 8 → .NET 9 migration — once in CI, once in our containerized deployments. The fix involved explicit \u003ccode\u003e--self-contained\u003c/code\u003e flags and careful SDK version pinning.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"what-net-10-fixed\"\u003e\u003ca href=\"/posts/dotnet-10-released/#what-net-10-fixed\" title=\"What .NET 10 Fixed\"\u003eWhat .NET 10 Fixed\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eMicrosoft addressed the fragility. The SDK now:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eResolves workloads deterministically\u003c/strong\u003e across environments\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFingerprints static assets automatically\u003c/strong\u003e, eliminating cache invalidation guesswork\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAligns container publishing\u003c/strong\u003e with the rest of the toolchain (no more surprise base image mismatches)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThat last point matters if you\u0026rsquo;re using \u003ccode\u003edotnet publish\u003c/code\u003e to generate container images directly. In .NET 9, it worked — until it didn\u0026rsquo;t, and then you spent an afternoon debugging why your Dockerfile suddenly produced different layers.\u003c/p\u003e\n\u003cp\u003e.NET 10 makes the build process \u003cstrong\u003eboring again\u003c/strong\u003e. And boring is what you want in CI/CD.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"the-hidden-win-roslyn-analyzers-play-nice\"\u003e\u003ca href=\"/posts/dotnet-10-released/#the-hidden-win-roslyn-analyzers-play-nice\" title=\"The Hidden Win: Roslyn Analyzers Play Nice\"\u003eThe Hidden Win: Roslyn Analyzers Play Nice\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e\u003cem\u003eOne overlooked improvement:\u003c/em\u003e Roslyn analyzers no longer slow down incremental builds as aggressively. If your project has 15+ analyzers enabled (you should), you\u0026rsquo;ll notice faster edit-compile-test cycles.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s not revolutionary. But when you\u0026rsquo;re running that loop 50 times a day, the seconds add up.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"c-14-practical-improvements-not-syntax-experiments\"\u003e\u003ca href=\"/posts/dotnet-10-released/#c-14-practical-improvements-not-syntax-experiments\" title=\"C# 14: Practical Improvements, Not Syntax Experiments\"\u003eC# 14: Practical Improvements, Not Syntax Experiments\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eC# 14 ships with .NET 10, and the language team made a smart choice: \u003cstrong\u003eno experimental features\u003c/strong\u003e. Instead, they focused on filling gaps that developers work around daily.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"field-backed-properties\"\u003e\u003ca href=\"/posts/dotnet-10-released/#field-backed-properties\" title=\"Field-Backed Properties\"\u003eField-Backed Properties\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ePreviously, auto-properties couldn\u0026rsquo;t expose their backing fields. Now they can:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-csharp\" data-lang=\"csharp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"k\"\u003eclass\u003c/span\u003e \u003cspan class=\"nc\"\u003eConfiguration\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"kt\"\u003estring\u003c/span\u003e \u003cspan class=\"n\"\u003eApiKey\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"k\"\u003eget\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003eset\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e// C# 14: Access the backing field directly\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003epublic\u003c/span\u003e \u003cspan class=\"k\"\u003evoid\u003c/span\u003e \u003cspan class=\"n\"\u003eClearSensitiveData\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003efield\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"c1\"\u003e// \u0026#39;field\u0026#39; keyword references backing field\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSmall change, but it eliminates the need for manual backing fields when you need direct access.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"linq-finally-gets-joins\"\u003e\u003ca href=\"/posts/dotnet-10-released/#linq-finally-gets-joins\" title=\"LINQ Finally Gets Joins\"\u003eLINQ Finally Gets Joins\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThis one should\u0026rsquo;ve happened years ago. LINQ now supports \u003ccode\u003eLeftJoin()\u003c/code\u003e and \u003ccode\u003eRightJoin()\u003c/code\u003e without extension method hacks:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-csharp\" data-lang=\"csharp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evar\u003c/span\u003e \u003cspan class=\"n\"\u003eresult\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003ecustomers\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLeftJoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eorders\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ec\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003ec\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eId\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eo\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003eo\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eCustomerId\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ec\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eo\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"n\"\u003ec\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eo\u003c/span\u003e \u003cspan class=\"p\"\u003e})\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eWhere\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eo\u003c/span\u003e \u003cspan class=\"p\"\u003e==\u003c/span\u003e \u003cspan class=\"kc\"\u003enull\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e// Customers without orders\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSelect\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ec\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIf you\u0026rsquo;ve written \u003ccode\u003eGroupJoin().SelectMany()\u003c/code\u003e gymnastics to fake left joins, you know why this matters.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"whats-still-missing\"\u003e\u003ca href=\"/posts/dotnet-10-released/#whats-still-missing\" title=\"What\u0026rsquo;s Still Missing\"\u003eWhat\u0026rsquo;s Still Missing\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eNo async LINQ. No discriminated unions. No pipeline operators.\u003c/p\u003e\n\u003cp\u003eSome will call that conservative. I call it \u003cstrong\u003ediscipline\u003c/strong\u003e. C# 14 doesn\u0026rsquo;t rewrite the language — it sharpens the tools we already use.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"migration-easier-than-net-9-but-not-trivial\"\u003e\u003ca href=\"/posts/dotnet-10-released/#migration-easier-than-net-9-but-not-trivial\" title=\"Migration: Easier Than .NET 9, But Not Trivial\"\u003eMigration: Easier Than .NET 9, But Not Trivial\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIf you\u0026rsquo;re coming from .NET 8, the upgrade path is straightforward. If you\u0026rsquo;re on .NET 9, it\u0026rsquo;s almost invisible. But \u0026ldquo;almost\u0026rdquo; still requires validation.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"the-breaking-changes-youll-actually-hit\"\u003e\u003ca href=\"/posts/dotnet-10-released/#the-breaking-changes-youll-actually-hit\" title=\"The Breaking Changes You\u0026rsquo;ll Actually Hit\"\u003eThe Breaking Changes You\u0026rsquo;ll Actually Hit\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eMicrosoft lists 47 breaking changes. Most won\u0026rsquo;t affect you. These will:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eASP.NET Core middleware order enforcement\u003c/strong\u003e — if you relied on loose ordering, expect build warnings (and potential runtime surprises).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEntity Framework Core query translation changes\u003c/strong\u003e — some LINQ queries that compiled in EF 8 now require client-side evaluation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJsonSerializer default behavior shifts\u003c/strong\u003e — particularly around null-handling and type discriminators in polymorphic scenarios.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eNone of these are blockers. But they will surface during integration testing if you skip unit coverage.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"what-we-learned-from-net-8--net-9\"\u003e\u003ca href=\"/posts/dotnet-10-released/#what-we-learned-from-net-8--net-9\" title=\"What We Learned from .NET 8 → .NET 9\"\u003eWhat We Learned from .NET 8 → .NET 9\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWhen we upgraded last year, we followed this pattern:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eRun your existing test suite first\u003c/strong\u003e — fix flaky tests before migrating. You don\u0026rsquo;t want to debug framework issues and test issues simultaneously.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eUpgrade dependencies in isolation\u003c/strong\u003e — update NuGet packages one layer at a time (infrastructure, then domain, then API surface).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDeploy to a staging clone first\u003c/strong\u003e — not staging itself, but a true production clone with real load patterns.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe third step caught two issues we missed locally: a JSON serialization edge case and a gRPC deadline timeout that behaved differently under sustained load.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"the-upgrade-checklist\"\u003e\u003ca href=\"/posts/dotnet-10-released/#the-upgrade-checklist\" title=\"The Upgrade Checklist\"\u003eThe Upgrade Checklist\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eBefore you start:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eConfirm all third-party libraries support .NET 10 (check NuGet compatibility)\u003c/li\u003e\n\u003cli\u003eUpdate your CI/CD pipeline SDK references\u003c/li\u003e\n\u003cli\u003eReview your \u003ccode\u003eglobal.json\u003c/code\u003e and lock the SDK version explicitly\u003c/li\u003e\n\u003cli\u003eValidate Docker base images if you\u0026rsquo;re containerized (\u003ccode\u003emcr.microsoft.com/dotnet/aspnet:10.0\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAudit custom Roslyn analyzers — some may not support C# 14 yet\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eRun your full test suite. Then run it again with diagnostics enabled. If you see warnings about obsolete APIs, address them now — they\u0026rsquo;ll become errors in .NET 11.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"when-to-migrate\"\u003e\u003ca href=\"/posts/dotnet-10-released/#when-to-migrate\" title=\"When to Migrate\"\u003eWhen to Migrate\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eIf you\u0026rsquo;re on .NET 6 (LTS support ended \u003cstrong\u003eNovember 2024\u003c/strong\u003e), you\u0026rsquo;re already late. Move to .NET 10 directly.\u003c/p\u003e\n\u003cp\u003eIf you\u0026rsquo;re on .NET 8 (LTS ending \u003cstrong\u003eNovember 2026\u003c/strong\u003e), you have time — but the sooner you migrate, the longer you benefit from performance improvements in production.\u003c/p\u003e\n\u003cp\u003eIf you\u0026rsquo;re on .NET 9 (STS ending \u003cstrong\u003eNovember 2026\u003c/strong\u003e), migrate during your next sprints. Feel lucky, you might just find a hidden gem in the upgrade. The effort is minimal, and you gain three years of support instead of eighteen months.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"what-comes-next-the-platform-we-deserved-all-along\"\u003e\u003ca href=\"/posts/dotnet-10-released/#what-comes-next-the-platform-we-deserved-all-along\" title=\"What Comes Next: The Platform We Deserved All Along\"\u003eWhat Comes Next: The Platform We Deserved All Along\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e.NET 10 represents something rare in software: \u003cstrong\u003ea mature platform that stopped chasing trends and started honoring its commitments\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eThree years of LTS support means three years where your focus shifts from framework updates to product delivery. Where your CI pipelines stabilize instead of breaking every six months. Where runtime behavior becomes predictable enough that 3 AM production incidents become less frequent.\u003c/p\u003e\n\u003cp\u003eThis isn\u0026rsquo;t the end of .NET\u0026rsquo;s evolution. It\u0026rsquo;s the foundation for what comes after.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"the-bigger-picture\"\u003e\u003ca href=\"/posts/dotnet-10-released/#the-bigger-picture\" title=\"The Bigger Picture\"\u003eThe Bigger Picture\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eWith .NET 10 stable and locked in for the next three years, Microsoft can now take risks elsewhere — in Aspire, in Blazor United, in native AOT, in AI integrations — without destabilizing the core runtime. That separation between \u003cstrong\u003estable platform\u003c/strong\u003e and \u003cstrong\u003eexperimental tooling\u003c/strong\u003e is exactly what the ecosystem needs.\u003c/p\u003e\n\u003cp\u003eIf .NET 10 feels boring, it\u0026rsquo;s because boring is what production systems need. Excitement belongs in features, not in frameworks.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"the-opportunity\"\u003e\u003ca href=\"/posts/dotnet-10-released/#the-opportunity\" title=\"The Opportunity\"\u003eThe Opportunity\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eFor teams still on .NET Framework, this is your target for a rebuild and reconsider your strategy over the past few years. You have done something really really wrong, and have to pay the price of delayed modernization.\u003c/p\u003e\n\u003cp\u003eFor teams on .NET 6 or 8, this is your stabilization window. And for teams already on .NET 9, this is your chance to lock in the improvements without the upgrade treadmill.\u003c/p\u003e\n\u003cp\u003e.NET 10 won\u0026rsquo;t fix your architecture. It won\u0026rsquo;t eliminate your technical debt. It won\u0026rsquo;t make bad code good. But it will give you a runtime that \u003cstrong\u003eperforms predictably, builds consistently, and stays supported long enough to matter\u003c/strong\u003e. And in a world where frameworks change faster than products ship, that\u0026rsquo;s not just valuable.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThat\u0026rsquo;s exactly what we needed,\u003c/strong\u003e and I\u0026rsquo;m really looking forward to building on top of it for years to come.\u003c/p\u003e\n","date_modified":"2026-05-26T10:22:03+02:00","date_published":"2025-11-13T18:00:00+01:00","id":"https://daily-devops.net/posts/dotnet-10-released/","language":"en","summary":".NET 10 ships JIT physical promotion, AVX 10.2 loop vectorization, and C# 14 with LTS support through November 2028. Boring is finally the feature.\n","tags":["architecture","dotnet","csharp","codequality","microsoft","performance"],"title":".NET 10: Boring by Design, Reliable by Default\n","url":"https://daily-devops.net/posts/dotnet-10-released/"},{"authors":[{"name":"Martin Stühmer","url":"https://daily-devops.net/authors/martin/"}],"content_html":"\u003cp\u003eMicrosoft recently \u003ca href=\"https://devblogs.microsoft.com/dotnet/dotnet-sts-releases-supported-for-24-months/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eannounced\u003c/a\u003e a change to their support policy for .NET Standard Term Support (STS) releases. The support period has been extended from 18 to 24 months. At first glance, this appears to be a welcome enhancement, giving developers and organizations more breathing room before forced upgrades. But is this really as generous as it seems?\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"whats-actually-changing\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#whats-actually-changing\" title=\"What\u0026rsquo;s Actually Changing?\"\u003eWhat\u0026rsquo;s Actually Changing?\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eLet\u0026rsquo;s get the facts straight:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e.NET STS releases (the odd-numbered versions like .NET 9, 11, etc.) will now receive security and quality updates for \u003cstrong\u003e24 months\u003c/strong\u003e instead of 18 months\u003c/li\u003e\n\u003cli\u003eThis applies retroactively to .NET 9, which will now be supported until November \u003cstrong\u003e2026\u003c/strong\u003e (instead of May 2026)\u003c/li\u003e\n\u003cli\u003e.NET 11, scheduled for release in November \u003cstrong\u003e2026\u003c/strong\u003e, will also receive the extended 24-month support\u003c/li\u003e\n\u003cli\u003eLong Term Support (LTS) releases remain at 36 months of support\u003c/li\u003e\n\u003c/ul\u003e\n\n\n\n\n\u003ch2 id=\"why-now-the-reality-check\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#why-now-the-reality-check\" title=\"Why Now? The Reality Check\"\u003eWhy Now? The Reality Check\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWhile Microsoft frames this as responding to customer feedback, one has to wonder if they\u0026rsquo;ve simply acknowledged what was already obvious to the development community. The 18-month support cycle has been problematic since its introduction:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eEnterprise Reality Gap\u003c/strong\u003e: Most enterprise organizations operate on annual budget cycles and 24-36 month technology refresh plans. An 18-month support cycle forced uncomfortable conversations about upgrades mid-cycle.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eCI/CD Myth\u003c/strong\u003e: The idealistic \u0026ldquo;just upgrade continuously\u0026rdquo; approach works wonderfully in conference presentations, but rarely matches reality in complex enterprise environments with large codebases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eResource Constraints\u003c/strong\u003e: With developer shortages and competing priorities, many teams struggled to allocate resources for mandatory upgrades every 18 months.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\n\n\n\n\u003ch2 id=\"a-negative-example-the-upgrade-ordeal\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#a-negative-example-the-upgrade-ordeal\" title=\"A Negative Example: The Upgrade Ordeal\"\u003eA Negative Example: The Upgrade Ordeal\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eConsider \u0026ldquo;Contoso Enterprises,\u0026rdquo; a mid-sized company running several critical applications on .NET 7 (STS). Their last upgrade to .NET 7 took months, involving:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency Audit\u003c/strong\u003e: Over 40 third-party NuGet packages, half of which either lagged behind .NET 7 support or required beta versions. Resolution involved contacting maintainers, waiting, or forking packages.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRegression Testing\u003c/strong\u003e: Legacy workflows required end-to-end manual testing, eating up QA bandwidth for weeks.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnvironment Sync\u003c/strong\u003e: Upgrades across dev, staging, production, and DR environments. Each step uncovered new surprises and configuration pitfalls.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBusiness Disruption\u003c/strong\u003e: Two urgent business initiatives had to be deprioritized because the upgrade consumed all available developer capacity.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAll this for a release with a lifecycle so short that, by the time stability returns, the next upgrade is looming. The newly extended 24-month window is helpful—but for Contoso, it\u0026rsquo;s still a sprint compared to the marathon pace of real enterprise change management.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"is-24-months-actually-enough\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#is-24-months-actually-enough\" title=\"Is 24 Months Actually Enough?\"\u003eIs 24 Months Actually Enough?\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe extra six months is undoubtedly helpful, but let\u0026rsquo;s not get too excited. Many organizations still face significant challenges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency Hell\u003c/strong\u003e: Upgrading a non-trivial application isn\u0026rsquo;t just about changing the target framework. It involves ensuring all dependencies are compatible, which can be a substantial undertaking.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTesting Burden\u003c/strong\u003e: Comprehensive testing of complex systems after framework upgrades remains resource-intensive.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStill Not Aligned\u003c/strong\u003e: Even at 24 months, the support cycle doesn\u0026rsquo;t perfectly align with most organizations\u0026rsquo; planning horizons.\u003c/li\u003e\n\u003c/ul\u003e\n\n\n\n\n\u003ch3 id=\"sts-vs-lts-a-quick-comparison\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#sts-vs-lts-a-quick-comparison\" title=\"STS vs. LTS: A Quick Comparison\"\u003eSTS vs. LTS: A Quick Comparison\u003c/a\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eRelease Type\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eSupport Length\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eTypical Use Case\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSTS\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e24 months\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eEarly adopters, feature-driven\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eLTS\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e36 months\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eStability-focused, enterprise apps\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n\n\n\u003ch2 id=\"practical-recommendations\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#practical-recommendations\" title=\"Practical Recommendations\"\u003ePractical Recommendations\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eGiven this change, here\u0026rsquo;s what I recommend:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eUpdate Your Planning\u003c/strong\u003e: If you\u0026rsquo;re on .NET 9, you now have until November 2026 instead of May 2026. Use this time wisely.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEvaluate LTS for Critical Apps\u003c/strong\u003e: If stability and long-term support are priorities, consider sticking with LTS releases like .NET 8 or .NET 10 in the near future.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAutomate Testing\u003c/strong\u003e: The best way to reduce upgrade pain is comprehensive automated testing. Invest now to make future upgrades less painful.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep Dependencies Current\u003c/strong\u003e: Regular dependency updates reduce the shock of framework upgrades. Consider tools like NuGet\u0026rsquo;s dependency management features or GitHub\u0026rsquo;s Dependabot.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKnow Your Lifecycle\u003c/strong\u003e: If your business can\u0026rsquo;t keep up with the STS treadmill, LTS remains your best friend.\u003c/li\u003e\n\u003c/ol\u003e\n\n\n\n\n\u003ch2 id=\"the-bottom-line\"\u003e\u003ca href=\"/posts/extended-dotnet-sts-support-timeframe/#the-bottom-line\" title=\"The Bottom Line\"\u003eThe Bottom Line\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eMicrosoft\u0026rsquo;s extension of STS support to 24 months isn\u0026rsquo;t revolutionary—it\u0026rsquo;s a pragmatic adjustment to reality. It acknowledges that the software development lifecycle in most organizations moves more deliberately than the idealized CI/CD paradise often depicted.\u003c/p\u003e\n\u003cp\u003eWhile the extra six months is welcome, it doesn\u0026rsquo;t fundamentally change the equation. Organizations still need thoughtful strategies for managing .NET upgrades, balancing between staying current and managing limited development resources.\u003c/p\u003e\n\u003cp\u003eIs it a generous gift? Perhaps. Or maybe it\u0026rsquo;s just Microsoft catching up with what most of us already knew: 18 months was simply too short for comfort.\u003c/p\u003e\n\u003cp\u003eWhat\u0026rsquo;s your take on the extended support timeframe? Will it materially change your .NET upgrade strategy, or is it just kicking the can a little further down the road?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This policy change specifically applies to the modern .NET releases (formerly known as .NET Core) and not the legacy .NET Framework, which follows a different support lifecycle.\u003c/p\u003e\n","date_modified":"2026-05-25T23:10:21+02:00","date_published":"2025-09-30T11:30:00+02:00","id":"https://daily-devops.net/posts/extended-dotnet-sts-support-timeframe/","language":"en","summary":"Microsoft extended .NET STS support from 18 to 24 months. Examine what this policy change really means for developers, teams, and organizations.","tags":["microsoft","dotnet"],"title":"The Generous Gift? Microsoft Extends .NET STS Support to 24 Months","url":"https://daily-devops.net/posts/extended-dotnet-sts-support-timeframe/"},{"authors":[{"name":"Martin Stühmer","url":"https://daily-devops.net/authors/martin/"}],"content_html":"\u003cp\u003eIn my experience, navigating through certification exams can sometimes feel like traversing a labyrinthine maze, especially when it comes to user interface (UI) experiences. However, Microsoft\u0026rsquo;s recent efforts in reimagining the UI for their certification exams are poised to revolutionize this journey. Let\u0026rsquo;s delve into how these changes are shaping the landscape of certification exams and what it means for aspiring professionals.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"embracing-user-centric-design\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#embracing-user-centric-design\" title=\"Embracing User-Centric Design\"\u003eEmbracing User-Centric Design\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eGone are the days of clunky interfaces and confusing navigation. Microsoft\u0026rsquo;s new approach places a strong emphasis on user-centric design principles, making the exam-taking experience more intuitive and seamless. By incorporating feedback from a diverse range of users, Microsoft has tailored the UI to cater to the specific needs and preferences of exam takers.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"streamlined-navigation\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#streamlined-navigation\" title=\"Streamlined Navigation\"\u003eStreamlined Navigation\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eOne of the most notable improvements is the streamlined navigation system. The revamped UI provides clear signposts and intuitive pathways, allowing candidates to focus on showcasing their skills rather than getting lost in a maze of menus. Whether you\u0026rsquo;re accessing the exam on a desktop or mobile device, the navigation remains consistent and user-friendly.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"enhanced-accessibility\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#enhanced-accessibility\" title=\"Enhanced Accessibility\"\u003eEnhanced Accessibility\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eAccessibility is at the forefront of Microsoft\u0026rsquo;s UI redesign efforts. The new interface is designed to be inclusive, ensuring that individuals with diverse abilities can navigate the exam with ease. Features such as customizable font sizes, screen reader compatibility, and keyboard shortcuts empower all candidates to demonstrate their knowledge without encountering unnecessary barriers.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"interactive-elements\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#interactive-elements\" title=\"Interactive Elements\"\u003eInteractive Elements\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eEngagement is key to effective learning and assessment. Microsoft has introduced interactive elements within the exam UI to enhance the candidate experience. From drag-and-drop exercises to interactive simulations, these features simulate real-world scenarios, allowing candidates to demonstrate their practical skills in a dynamic environment.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"personalized-experience\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#personalized-experience\" title=\"Personalized Experience\"\u003ePersonalized Experience\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eNo two candidates are alike, and Microsoft recognizes the importance of personalization in the learning journey. The new UI allows candidates to customize their exam experience based on their preferences and areas of expertise. Whether it\u0026rsquo;s adjusting the interface layout or accessing tailored resources, candidates have the flexibility to shape their exam journey according to their individual needs.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"seamless-integration-with-learning-resources\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#seamless-integration-with-learning-resources\" title=\"Seamless Integration with Learning Resources\"\u003eSeamless Integration with Learning Resources\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe redesigned UI seamlessly integrates with Microsoft Learn and other learning resources, providing candidates with easy access to study materials and practice exams. This integration fosters a cohesive learning experience, allowing candidates to bridge the gap between theory and practice effectively.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"conclusion\"\u003e\u003ca href=\"/posts/reimagining-the-microsoft-certification-exam-ui/#conclusion\" title=\"Conclusion\"\u003eConclusion\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIn conclusion, Microsoft\u0026rsquo;s reimagined certification exam UI experience marks a significant leap forward in the realm of professional development. By embracing user-centric design, streamlined navigation, enhanced accessibility, interactive elements, personalized experiences, and seamless integration with learning resources, Microsoft has set a new standard for certification exams. Aspiring professionals can now embark on their certification journey with confidence, knowing that the UI is designed to empower them every step of the way.\u003c/p\u003e\n\u003cp\u003eFor those interested in exploring the redesigned UI firsthand, Microsoft offers a demo of the exam experience at \u003ca href=\"http://aka.ms/examdemo\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003ehttp://aka.ms/examdemo\u003c/a\u003e. Embrace the future of certification exams and unlock new opportunities for professional growth.\u003c/p\u003e\n","date_modified":"2026-05-25T23:10:21+02:00","date_published":"2024-03-14T09:00:00+01:00","id":"https://daily-devops.net/posts/reimagining-the-microsoft-certification-exam-ui/","language":"en","summary":"Experience the revolution in Microsoft Certification Exam UI with streamlined navigation, enhanced accessibility, and interactive design features.","tags":["certification","azure","microsoft"],"title":"Reimagining the Microsoft Certification Exam UI Experience","url":"https://daily-devops.net/posts/reimagining-the-microsoft-certification-exam-ui/"},{"authors":[{"name":"Martin Stühmer","url":"https://daily-devops.net/authors/martin/"}],"content_html":"\u003cp\u003e\u003cem\u003eWhen can I finally renew my Microsoft certification?\u003c/em\u003e - I\u0026rsquo;m certainly not alone with this or similar questions and the associated uncertainty. Okay, a certain impatience certainly resonates as well. After all, I would also like to schedule it into my daily routine. But how?\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"understanding-the-timeline\"\u003e\u003ca href=\"/posts/when-can-i-finally-renew-my-microsoft-certification/#understanding-the-timeline\" title=\"Understanding the Timeline\"\u003eUnderstanding the Timeline\u003c/a\u003e\u003c/h2\u003e\n\n\n\n\n\u003ch3 id=\"facts\"\u003e\u003ca href=\"/posts/when-can-i-finally-renew-my-microsoft-certification/#facts\" title=\"Facts\"\u003eFacts\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThe role-based and specialized Microsoft certifications in the areas of \u003cem\u003eAzure\u003c/em\u003e, \u003cem\u003eDynamics 365\u003c/em\u003e, \u003cem\u003eMicrosoft 365\u003c/em\u003e, \u003cem\u003ePower Platform\u003c/em\u003e, and \u003cem\u003eSecurity, Compliance and Identity\u003c/em\u003e are valid for one year, with the exception of the Foundation certifications, which do not expire. However, since February 2021, Microsoft offers the possibility to renew these certifications for one year each, free of charge.\u003c/p\u003e\n\u003cp\u003eTo do this, you will receive an email from Microsoft 6 months (i.e. exactly 180 days) before the certification expires with all the necessary information to extend the certificate free of charge.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"against-the-impatience\"\u003e\u003ca href=\"/posts/when-can-i-finally-renew-my-microsoft-certification/#against-the-impatience\" title=\"Against the impatience\"\u003eAgainst the impatience\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eBut those who, like me, like to be prepared and planned for such issues, have to wait for the mail so far, it seems.\u003c/p\u003e\n\u003cp\u003eAs always, a closer look at the URL structure will help the curious. You will notice that the existing structures like \u003ca href=\"https://learn.microsoft.com/en-us/certifications/azure-solutions-architect/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003e\u003ccode\u003ehttps://learn.microsoft.com/en-us/certifications/azure-solutions-architect/\u003c/code\u003e\u003c/a\u003e only need to be extended by the path segment \u003cem\u003e\u003ca href=\"https://learn.microsoft.com/en-us/certifications/azure-solutions-architect/renew/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003e\u003ccode\u003erenew/\u003c/code\u003e\u003c/a\u003e\u003c/em\u003e. This addition will take us to a completely new page with extensive information about recertification, provided we are logged in with our Microsoft Learn account.\u003c/p\u003e\n\u003cp\u003eAt first glance, we can see until when the certification is valid and how many days are left. Below that is the prompt:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eIf you have this certification and it will expire within six months, you are eligible to renew. Show that you have kept current with the latest Azure updates by passing the renewal assessment. You can also prepare to renew with the curated collection of learning modules.\u003cbr/\u003e\u003cbr/\u003e\n\u003cstrong\u003eSkills measured in renewal assessment:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDesign a data storage solution for relational data\u003c/li\u003e\n\u003cli\u003eDesign a data storage solution for non-relational data\u003c/li\u003e\n\u003cli\u003eDescribe high availability and disaster recovery strategies\u003c/li\u003e\n\u003cli\u003eDesign an Azure compute solution\u003c/li\u003e\n\u003cli\u003eDesign an application architecture\u003c/li\u003e\n\u003cli\u003eDesign network solutions\u003c/li\u003e\n\u003cli\u003eDesign data integration\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\n\n\n\n\n\n\n\n\n\n  \n  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cfigure class=\"responsive\"\u003e\n  \u003cpicture\u003e\n    \n      \n        \n        \n\n        \n          \n        \n\n        \n\n        \n        \n\n        \n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-544x79.webp?v=e625887b3920250977732abd4a51fbeb\"\n  type=\"image/webp\"\n  media=\" (max-width: 575.98px)\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-544x79.png?v=567de646e90d8836a1955f269791c431\"\n  type=\"image/png\"\n  media=\" (max-width: 575.98px)\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-672x98.webp?v=53c5d62d62bcba6ed123355da4033a98\"\n  type=\"image/webp\"\n  media=\" (max-width: 767.98px)\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-672x98.png?v=834d2ee5899924382477dc9c7ae9f181\"\n  type=\"image/png\"\n  media=\" (max-width: 767.98px)\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-896x130.webp?v=c6c596f30b5a139f774bafb9ac950c74\"\n  type=\"image/webp\"\n  media=\" (max-width: 991.98px)\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-896x130.png?v=d2cece0265a610e450ee3be4b333578c\"\n  type=\"image/png\"\n  media=\" (max-width: 991.98px)\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-1104x161.webp?v=4e1e7a99d679a2d703f61070b9e6ad0d\"\n  type=\"image/webp\"\n  media=\" (max-width: 1199.98px)\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-1104x161.png?v=d3c7cbdfa403aad594c6da5e097371be\"\n  type=\"image/png\"\n  media=\" (max-width: 1199.98px)\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-1444x210.webp?v=269692395e0a1c282376366cc26d48f7\"\n  type=\"image/webp\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info-1444x210.png?v=8c484408bba8047f0caa7e70ed30ef8a\"\n  type=\"image/png\" /\u003e\n  \n  \n\n\n\n\n      \n      \n    \n    \u003cimg\n      src=\"/posts/when-can-i-finally-renew-my-microsoft-certification/microsoft-mslearn-architect-info.png?v=93c0216a64eda1e3ddcd7fdac4cb1fe3\"\n      alt=\"Countdown in hours\"\n      loading=\"lazy\"\n      \n      decoding=\"async\"\n      width=\"1444\" height=\"1444\"\n      title=\"Screenshot from https://learn.microsoft.com/en-us/certifications/azure-solutions-architect/renew/\"\n      copyright=\"Screenshot from https://learn.microsoft.com/en-us/certifications/azure-solutions-architect/renew/\" /\u003e\n  \u003c/picture\u003e\n  \n  \u003cfooter\u003e\u003csmall\u003eScreenshot from https://learn.microsoft.com/en-us/certifications/azure-solutions-architect/renew/\u003c/small\u003e\u003c/footer\u003e\n  \n  \n\u003c/figure\u003e\n\nThis is followed by hour-by-hour information on when the renewal exam will be available and a list of available learning paths and modules that can still be taken during the preparation time. Due to technological development, some modules are updated or new modules are added, so it is worth taking a look regularly.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"other-extension-exams\"\u003e\u003ca href=\"/posts/when-can-i-finally-renew-my-microsoft-certification/#other-extension-exams\" title=\"Other extension exams\"\u003eOther extension exams\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eThis URL segment extension works with all role-based and specialized Microsoft certifications, as the following examples show.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/certifications/azure-solutions-architect/renew/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eRenewal for Microsoft Certified: Azure Solutions Architect Expert\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/certifications/azure-cosmos-db-developer-specialty/renew/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eRenewal for Microsoft Certified: Azure Cosmos DB Developer Specialty\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/certifications/d365-finance-and-operations-apps-solution-architect-expert/renew/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eRenewal for Microsoft Certified: Dynamics 365: Finance and Operations Apps Solution Architect Expert\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/certifications/power-platform-solution-architect-expert/renew/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eRenewal for Microsoft Certified: Power Platform Solution Architect Expert\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/certifications/cybersecurity-architect-expert/renew/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eRenewal for Microsoft Certified: Cybersecurity Architect Expert\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\n\n\n\u003ch2 id=\"summary\"\u003e\u003ca href=\"/posts/when-can-i-finally-renew-my-microsoft-certification/#summary\" title=\"Summary\"\u003eSummary\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIt\u0026rsquo;s not a life-changing lifehack and 6 months (180 days) is really enough time to get your head around it. But if you have more than two or three certifications, scheduling certainly makes sense, so good luck with your next (re)certification.\u003c/p\u003e","date_modified":"2026-05-25T23:10:21+02:00","date_published":"2023-04-11T09:00:00+02:00","id":"https://daily-devops.net/posts/when-can-i-finally-renew-my-microsoft-certification/","language":"en","summary":"Learn when and how to renew your Microsoft certifications including Azure, Dynamics 365, Microsoft 365, and Power Platform with renewal timelines.","tags":["certification","azure","microsoft"],"title":"When Can I Finally Renew My Microsoft Certification","url":"https://daily-devops.net/posts/when-can-i-finally-renew-my-microsoft-certification/"},{"authors":[{"name":"Martin Stühmer","url":"https://daily-devops.net/authors/martin/"}],"content_html":"\u003cp\u003e\u003cem\u003eHow do I best prepare for a Microsoft certification?\u003c/em\u003e - this or a similar question is asked by everyone who wants to deal with the topics Microsoft, Azure, Microsoft 365, Power Platform or Dynamics 365. In this article, I would like to go into the possibilities that Microsoft offers us for preparation.\u003c/p\u003e\n\u003cp\u003eRegardless of whether you\u0026rsquo;re new to the subject or already know it, preparing for a potential exam is often a challenge. But first, let\u0026rsquo;s clarify which exams and certifications are available in the first place.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"microsoft-certifications-at-a-glance\"\u003e\u003ca href=\"/posts/how-to-prepare-for-microsoft-certification/#microsoft-certifications-at-a-glance\" title=\"Microsoft certifications at a glance\"\u003eMicrosoft certifications at a glance\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eMicrosoft categorizes its entire \u003ca href=\"https://learn.microsoft.com/en-us/certifications/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eCertification Portfolio\u003c/a\u003e by category and level. The following categories are currently provided by Microsoft:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eAzure\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003eDynamics 365\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003eMicrosoft 365\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003ePower Platform\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003eSecurity, Compliance and Identity\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs well as in the levels \u003cem\u003eFundamentals\u003c/em\u003e, \u003cem\u003eRole-based\u003c/em\u003e and \u003cem\u003eSpecialty\u003c/em\u003e. This is very clearly presented in the overview (\u003ca href=\"http://aka.ms/traincertposter\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eaka.ms/TrainCertPoster\u003c/a\u003e) and is regularly updated by Microsoft. In addition, Microsoft offers a second, much more detailed overview (\u003ca href=\"http://aka.ms/traincertdeck\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eaka.ms/TrainCertDeck\u003c/a\u003e) that goes into great detail about the content and learning opportunities of each certification. This is also regularly updated by Microsoft.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"how-do-i-prepare-for-a-certification-such-as-microsoft-certified-azure-fundamentals\"\u003e\u003ca href=\"/posts/how-to-prepare-for-microsoft-certification/#how-do-i-prepare-for-a-certification-such-as-microsoft-certified-azure-fundamentals\" title=\"How do I prepare for a certification such as Microsoft Certified: Azure Fundamentals?\"\u003eHow do I prepare for a certification such as \u003cem\u003eMicrosoft Certified: Azure Fundamentals\u003c/em\u003e?\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBasically, it\u0026rsquo;s like any other exam you take during your career. First, you have to familiarize yourself with the content and the environment before you can successfully take the exam. Microsoft offers a wide range of information, learning content, and opportunities for this purpose.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"where-can-i-find-the-learning-content-i-need-for-certification\"\u003e\u003ca href=\"/posts/how-to-prepare-for-microsoft-certification/#where-can-i-find-the-learning-content-i-need-for-certification\" title=\"Where can I find the learning content I need for certification?\"\u003eWhere can I find the learning content I need for certification?\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eMicrosoft provides a very comprehensive overview page of its certifications. Taking the \u003ca href=\"https://learn.microsoft.com/en-us/certifications/azure-fundamentals/\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003e\u003cem\u003eMicrosoft Certified: Azure Fundamentals\u003c/em\u003e\u003c/a\u003e certification as an example, we see the following content in the \u003cem\u003eRated Qualifications\u003c/em\u003e section.\u003c/p\u003e\n\u003cp\u003e\n\n\n\n\n\n\n\n\n\n  \n  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cfigure class=\"responsive\"\u003e\n  \u003cpicture\u003e\n    \n      \n        \n        \n\n        \n          \n        \n\n        \n\n        \n        \n\n        \n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured-544x114.webp?v=a7c3b3640555c9c3ed910129b9734074\"\n  type=\"image/webp\"\n  media=\" (max-width: 575.98px)\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured-544x114.png?v=40d659d55589460a1de441df6c8964a7\"\n  type=\"image/png\"\n  media=\" (max-width: 575.98px)\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured-672x141.webp?v=cf10cd7fdaf02ca9aab0488ac0468669\"\n  type=\"image/webp\"\n  media=\" (max-width: 767.98px)\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured-672x141.png?v=fe291f1e0371ffb21d28e8dc8164d5ff\"\n  type=\"image/png\"\n  media=\" (max-width: 767.98px)\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n\u003csource\n  srcset=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured-896x188.webp?v=44962e189a4b97517d74e2e1d928a09f\"\n  type=\"image/webp\" /\u003e\n  \n  \n\n\n\n\n\n\n  \n  \n\u003csource\n  srcset=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured-896x188.png?v=cc81847269d2832628518369a9aa9b0a\"\n  type=\"image/png\" /\u003e\n  \n  \n\n\n\n\n        \n\n\n\n\n\n\n        \n\n\n\n\n\n\n      \n      \n    \n    \u003cimg\n      src=\"/posts/how-to-prepare-for-microsoft-certification/az-900-skills-measured.png?v=83a99b5ec260c3df3083ddbd64333894\"\n      alt=\"Skills measured\"\n      loading=\"lazy\"\n      \n      decoding=\"async\"\n      width=\"1444\" height=\"1444\"\n      title=\"Microsoft - https://docs.microsoft.com/en-us/learn/\"\n      copyright=\"Microsoft - https://docs.microsoft.com/en-us/learn/\" /\u003e\n  \u003c/picture\u003e\n  \n  \u003cfooter\u003e\u003csmall\u003eMicrosoft - https://docs.microsoft.com/en-us/learn/\u003c/small\u003e\u003c/footer\u003e\n  \n  \n\u003c/figure\u003e\n\u003c/p\u003e\n\u003cp\u003eThis already gives a rough overview of the content. Scrolling further down, you will find a list of online exam preparation courses for this exam. These are both free and partially paid content, as you can see from the subsection heading.\u003c/p\u003e\n\u003cp\u003eIn order to track your own learning progress with the free content, it is recommended that you set up a Microsoft Learn account. All other content is provided by Microsoft free of charge, this applies in particular to training units with a practical part. Microsoft provides a time-limited Sandbox Subscription for this purpose.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"do-i-get-this-information-for-other-microsoft-exams-as-well\"\u003e\u003ca href=\"/posts/how-to-prepare-for-microsoft-certification/#do-i-get-this-information-for-other-microsoft-exams-as-well\" title=\"Do I get this information for other Microsoft exams as well?\"\u003eDo I get this information for other Microsoft exams as well?\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eYes, the learning experience is structured very consistently at Microsoft, so you will also find the elements and content explained here for other exams.\u003c/p\u003e\n\n\n\n\n\u003ch3 id=\"what-does-a-microsoft-exam-look-like\"\u003e\u003ca href=\"/posts/how-to-prepare-for-microsoft-certification/#what-does-a-microsoft-exam-look-like\" title=\"What does a Microsoft exam look like?\"\u003eWhat does a Microsoft exam look like?\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eRegardless of the content of an exam, it is advisable to familiarize yourself with the exam environment and the structure of the questions. For this purpose, Microsoft (\u003ca href=\"http://aka.ms/examdemo\" target=\"_blank\" rel=\"noopener external noreferrer\"\u003eaka.ms/examdemo\u003c/a\u003e) offers a portal where you can familiarize yourself with the structure and question types free of charge and with free access.\u003c/p\u003e\n\n\n\n\n\u003ch2 id=\"summary\"\u003e\u003ca href=\"/posts/how-to-prepare-for-microsoft-certification/#summary\" title=\"Summary\"\u003eSummary\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eMy experience so far has shown that one is already very well prepared for certification with the free content. However, you should not take the exams lightly, as Microsoft itself regularly updates the content and, if necessary, tightens up or replaces questions. Certifications at the Associate level and above require some hands-on experience in addition to the learning content.\u003c/p\u003e","date_modified":"2026-05-25T23:10:21+02:00","date_published":"2023-01-27T21:00:00+01:00","id":"https://daily-devops.net/posts/how-to-prepare-for-microsoft-certification/","language":"en","summary":"Comprehensive guide to preparing for Microsoft certifications including Azure, Microsoft 365, Power Platform, and Dynamics 365 exams with study strategies.","tags":["certification","azure","microsoft"],"title":"How to Prepare for Microsoft Certification","url":"https://daily-devops.net/posts/how-to-prepare-for-microsoft-certification/"}],"language":"en","title":"Microsoft Technologies and Products on Daily DevOps \u0026 .NET","version":"https://jsonfeed.org/version/1.1"}