.NET 11 is the next Long-Term Support (LTS) release of the .NET platform, bringing meaningful performance gains, new language features, and better cloud-native tooling. If you're running an Optimizely CMS site and you want to live on the bleeding edge, it's surprisingly straightforward to get everything running on a .NET 11 preview SDK today. Here's exactly how I did it with the Alloy sample site.
Prerequisites
The .NET 11 Preview SDK – download the latest preview from [https://dotnet.microsoft.com/download/dotnet/11.0](https://dotnet.microsoft.com/download/dotnet/11.0).
Visual Studio 2026
Enable Preview SDKs in Visual Studio
By default Visual Studio only resolves release SDKs. To allow it to load and build against a preview SDK:
Go to Tools → Options → Environment → Preview Features.
Enable Use previews of the .NET SDK (requires restart).
Restart Visual Studio.
Alternatively, pin the SDK version at the solution root with a 'global.json' so the CLI always picks the correct preview build:
{
"sdk": {
"version": "11.0.100-preview.3.25201.16",
"rollForward": "latestMinor",
"allowPrerelease": true
}
}Code Changes
That's the whole point of this post the change is one line in your '.csproj'
Open your .csproj and change the <TargetFramework> element
<PropertyGroup>
<TargetFramework>net11.0</TargetFramework>
<Nullable>disable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>Restore, build, and run. The site starts up on .NET 11 with no other changes required.
Why Bother?
What's New in .NET 11 Targeting a preview SDK purely to be on the cutting edge needs a payoff. Here are the .NET 11 improvements that are most relevant to an Optimizely CMS workload.
JIT and PGO improvements
Faster cold start .NET 9 shipped Profile-Guided Optimisation (PGO) enabled by default. .NET 10 and 11 continue to tune it. For a CMS application which does a large amount of work at startup (dependency injection container build, content model scanning, route registration) a lower cold-start time directly improves developer feedback loops and container restart speed in production. For example if you're running in a load balanced enviroment new servers starting up will start a lot quicker
Improved async/await state machine codegen
The runtime team has continued reducing allocations in the async state machine. Optimizely content delivery pipelines are heavily async so fewer allocations means lower GC pressure and more consistent response times.
System.Text.Json v11
Source generation improvements Optimizely's serialisation layer and any custom converters you write benefit from faster, allocation-free JSON serialisation through the improved source generator in .NET 11. This is particularly relevant if you use the headless/content delivery API layer
Enhanced Span<T> and MemoryMarshal APIs
Continued improvements to low-level memory APIs benefit high-throughput scenarios like search index ingestion and bulk content import, where you need to move large amounts of data with minimal allocation.
A full breakdown of whats coming in .net 11 can be found here https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-11/overview
Should I upgrade?
Probably not, preview SDKs are not supported for production by Microsoft or Optimizely. Running on .NET 11 preview today is appropriate for:
Personal labs and demo sites
Evaluating new language or runtime features before they ship.
Writing blog posts 😉
When .NET 11 reaches GA (expected November 2026), it will become an LTS release supported for three years. That's the right time to migrate production Optimizely workloads if you need any of the .NET 11 features for your builds.