#615 – July 05, 2026
AI agents can drive .NET diagnostic tools the same way a senior developer would
How to guide agents during production investigations with .NET CLI
16 minutes by Christophe Nasarre
AI agents can drive .NET diagnostic tools the same way a senior developer would: run a command, read the output, decide what to do next. For tools you own, adding MCP server support exposes typed functions and workflow prompts to the agent with no shell parsing. For tools you cannot modify, a simple markdown skill file teaches the agent how to use existing CLI tools like dotnet-dump step by step.
Lost ASP.NET identity cookies on IIS application pool restarts
10 minutes by Rick Strahl
ASP.NET cookie authentication encrypts cookie data using keys that must stay consistent between app restarts. On IIS, Application Pools default to not loading a user profile, which means encryption keys are regenerated on every restart, breaking existing cookies. Fix this by either enabling "Load User Profile" in the Application Pool settings, or by explicitly setting a persistent key storage location using the AddDataProtection API.
.NET 8 and .NET 9 will reach end of support this November
2 minutes by Rahul Bhandari
.NET 8 and .NET 9 both reach end of support on November 10, 2026. After that date, they will no longer receive security updates or technical support. Upgrading to .NET 10 is recommended, as it is a long-term support release backed until November 2028. You can upgrade by changing the TargetFramework value in your project file to net10.0.
Writing a .NET garbage collector in C#
14 minutes by Kevin Gosse
Finalizers in .NET are handled almost entirely by the garbage collector, not the runtime engine. Unreachable finalizable objects move to an f-reachable queue, keeping them alive until a dedicated thread runs their finalizers. Short and long weak references behave differently during this process, requiring careful ordering in the mark phase. Some types like WeakReference skip the queue entirely through eager finalization, where the collector calls the finalizer directly.
Closed class hierarchies
11 minutes by Andrew Lock
Closed class hierarchies, coming in .NET 11 preview 5, let you mark a base class with the closed keyword so only classes within the same assembly can inherit from it. The key benefit is that the compiler knows all possible derived types, enabling proper exhaustiveness checking in switch expressions. This means adding a new type to the hierarchy will trigger compiler warnings anywhere the new case is not handled, making your code safer and easier to maintain.
And the most popular article from the last issue was: