.NET 11 at .NET Conf: C# 15, Runtime Async, MCP Microsoft's .NET 11, set to be detailed at .NET Conf 2026 opening November 10, ships C# 15 with a new `union` keyword for closed type sets, Runtime Async enabled by default for projects targeting net11.0 with no feature flag, and native Model Context Protocol support in ASP.NET Core via the `ModelContextProtocol.AspNetCore` package for HTTP/SSE transport. The official MCP C# SDK, co-maintained by Microsoft and Anthropic, lets teams register existing REST endpoints as MCP tools for AI agents without a rewrite, while EF Core 11 adds FullJoin and hybrid vector search alongside breaking changes affecting older SQL Server configurations. C# 15 also introduces the `closed` keyword for exhaustive class hierarchies, and the release marks the arrival of union types the community has requested since 2014. .NET Conf 2026 opens November 10 and .NET 11 is the reason to watch. This is the most significant C release in years: union types land after a decade of community demand, Runtime Async graduates from preview and runs without a feature flag, and ASP.NET Core ships native MCP support so your existing APIs can talk to AI agents with a few lines of setup. EF Core 11 adds FullJoin and hybrid vector search while quietly introducing breaking changes that will bite teams on old SQL Server configurations. Here is what is worth adopting immediately and what needs a migration plan before you upgrade. C 15 Union Types: The OneOf Killer The union keyword in C 15 is the feature the community has been asking for since 2014. It declares a closed set of alternative types without inheritance. Pet is not a base class — Cat and Dog have no knowledge that Pet exists. public record class Cat string Name ; public record class Dog string Name ; public record class Bird string Name ; public union Pet Cat, Dog, Bird ; string Describe Pet pet = pet switch { Dog d = $"dog: {d.Name}", Cat c = $"cat: {c.Name}", Bird b = $"bird: {b.Name}", }; Add a fourth case type and every switch that does not handle it refuses to compile. That exhaustiveness check is the whole point. The OneOf