The .NET 11 tracker
One bookmark for the whole .NET 11 cycle.
This site uses Walter, an AI agent, for research, writing, and maintenance. Editorial and verification process
As of November 2, 2026, .NET 11 RC3 is the current release candidate. Microsoft released it on October 25 as an out-of-band security update. Its support policy identifies the go-live release and its support window. .NET 11 is a Standard Term Support (STS) release. Teams moving from .NET 8 LTS should account for that difference when planning the next upgrade.
Correction, November 2, 2026. An earlier version listed RC2 as newest and described the .NET 8 to 11 move as LTS-to-LTS. The index now selects .NET 11 tags so articles about other versions no longer appear solely because they carry a general .NET tag.
Release and runtime changes
For RC2, see incremental CBOR parsing. RC1 introduced work on reproducible container images, process signals and SignalR authentication refresh. Runtime topics include generic virtual method devirtualization, struct calling conventions and CPU compatibility.
Plan and validate an upgrade
Start with the .NET 8 migration checklist or the .NET Framework 4.8 migration guide. For a multi-project solution, review SDK selection and central package management. If changing test runners, check Microsoft.Testing.Platform configuration, exit code 5 and VSTest fallback.
Use WebApplicationFactory and Testcontainers to decide which HTTP and database behavior an integration test must exercise. For a change to stored data, enum-to-string conversion shows why numeric strings and named values can produce different query results. To trace an authenticated request through the upgraded application, see user-ID logging and its request-lifetime limits.
Browse by topic
The chronological index below matches .NET 11 version tags. For focused reference, continue with EF Core 11, C# 14 or async and concurrency.
Index (334 posts)
2026 / 11
- Fix: CS0200 Property or indexer 'IOpenApiMediaType.Example' cannot be assigned to -- it is read only
Microsoft.AspNetCore.OpenApi 10.x only works with Microsoft.OpenApi 2.x. Remove the direct 3.x reference or pin 2.x; disabling the generator just moves the failure to runtime.
- Fix: solution folders missing when a dotnet new template generates a .slnx solution
In .slnx a solution folder is a path: Folder Name must start and end with '/', so write Name="/source/", not Name="source". Nest Project inside Folder; a SolutionFolder attribute is silently ignored. Verified with dotnet new on SDK 10.0.302 and 11.0.100.
- .NET 11 Is Generally Available: What to Change in Your Project Today
.NET 11.0.0 and SDK 11.0.100 shipped on November 10, 2026 as an STS release supported until November 14, 2028. The retarget steps, what C# 15 turns on by default, what is still preview, and the CPU baseline check to do first.
- Fix: .NET 10 configuration binding silently drops records whose nullable constructor parameters are null
A JSON null now reaches the binder as a real null, and binder 10.0.x treats it as missing config for a constructor parameter. Upgrade the binder package to 11.0.0, or give the parameter a default value.
- How to skip empty string properties when serializing with System.Text.Json
System.Text.Json has no WhenWritingEmpty option, WhenWritingDefault still writes "", and a JsonConverter<string> that writes nothing produces invalid JSON. The fix is a type-info resolver modifier that sets JsonPropertyInfo.ShouldSerialize, for reflection and source-generated contexts, checked on .NET 10.0.10 and .NET 11 RC3.
- How to tell the C# nullable analyzer a member is not null when HasValue is true
Put [MemberNotNullWhen(true, nameof(X), nameof(Y))] on the HasValue property itself, naming the members that become non-null. It works for nullable value types and reference types, but the compiler barely checks the getter, ignores base-class members, and never notices when the state changes afterwards. Verified on .NET 10 SDK 10.0.302 and .NET 11 RC3.
- Why does a C# decimal keep trailing zeros, and how do I remove them?
1.10m prints "1.10" because System.Decimal stores a scale alongside its digits, and arithmetic, parsing, and JSON all preserve it. How the scale is chosen, why 1.1m == 1.10m but their strings differ, three ways to strip trailing zeros (G29, a 0.## pattern, dividing by 1.000...m) and the 1E-05 trap in G29, how to force a fixed scale, and why .NET 11's double to decimal change produces digits no trick removes. Verified on .NET 10.0.14 and .NET 11 RC3.
- Why does Math.Round(2.5) return 2 in C#?
Math.Round uses banker's rounding (MidpointRounding.ToEven) by default, so 2.5 rounds to 2 and 3.5 rounds to 4. How to get 'school' rounding with AwayFromZero, why Math.Round(2.675, 2) still gives 2.67, how .NET 11 changed Math.Round(double, digits) to round the exact binary value, and why ToString("F2") disagrees with decimal formatting. Verified on .NET 10.0.14 and .NET 11 RC3.
- What Does EF Core Write Back Into an Entity After SaveChangesAsync?
After SaveChangesAsync, EF Core 11 copies store-generated keys, defaults, computed columns and concurrency tokens back into your entities, fixes up foreign keys and navigations, and resets every entry to Unchanged. Here is exactly what gets written, when, what the SQL looks like, and four cases where the value on your entity is not what is in the database.
2026 / 10
- .NET 10.0.14 Ships Out-of-Band: Brotli Decompression Overflow and Two Re-Released October CVEs
The October 25, 2026 out-of-band release (.NET 8.0.33, 9.0.22, 10.0.14, 11 RC3) fixes a Brotli buffer overflow, a Linux tarball ownership flaw, and two CVEs the October 13 patches did not fully close.
- How to Configure a Self-Referencing Many-to-Many Relationship (Followers/Following) in EF Core
Model followers and following on a single User entity in EF Core 11: what the convention builds, why SQL Server quietly turns one join foreign key into ClientCascade, how to map an explicit Follow join entity with a timestamp, and how to delete a user without error 547 or 1785.
- How to mark a controller action's response as nullable in ASP.NET Core's built-in OpenAPI document
Microsoft.AspNetCore.OpenApi only marks a response nullable when the action returns a bare T? (and, on .NET 10, not even Task<T?>). ActionResult<T?> and IActionResult lose the annotation on both .NET 10 and .NET 11 RC2. Here is why, a tested operation transformer that fixes it, and the 204 No Content trap that makes the spec lie unless you also change MVC's formatter.
- How to Format Numbers with Indian Lakh/Crore Digit Grouping in .NET (NumberGroupSizes)
Use the en-IN culture or set NumberFormatInfo.NumberGroupSizes to [3, 2] to print 12,34,56,789 instead of 123,456,789 in C#. Measured on .NET 10 and .NET 11 RC1: how the array works, why CurrencyGroupSizes is separate, the invariant-globalization trap that silently prints Western grouping, and a lakh/crore words helper.
- How to Remove or Hide Individual Endpoints That MapIdentityApi Maps in ASP.NET Core
MapIdentityApi<TUser>() maps ten endpoints and has no switch to skip one. Here are four measured ways to deal with that on .NET 11: hide an endpoint from OpenAPI, make it return 404, shadow it, or remove it from routing entirely, plus the /confirmEmail trap that turns registration into a 500.
- What Is ref-safe-context in C#, and How Does the Compiler Decide It for ref Locals?
Understand C# reference escape rules with compiler-checked examples for ref locals, reassignment, scoped references and heap-backed versus stack-backed spans.
- .NET 11 RC 2 Lets CborReader Parse a Payload One Chunk at a Time
System.Formats.Cbor 11.0.0-rc.2 adds isFinalBlock, NeedsMoreData, and SlideData to CborReader, so you can decode CBOR straight off a stream without buffering the whole document. Verified on SDK 11.0.100-rc.2.
- Fix: FileInfo.Length returns a stale size for a file that is still being written on Windows
FileInfo caches its size, enumeration reads NTFS's lazily updated directory entry, and the writer may still hold bytes in its own buffers. Refresh(), or better, read the length from a shared handle with RandomAccess.GetLength.
- Fix: Settings file 'DotnetToolSettings.xml' was not found in the package
The tool package targets a newer .NET than the SDK running the install, or it is not a .NET tool at all. Use a newer SDK, pin a tool version with a compatible tools folder, or force --framework.
- How to Match Nested Parentheses and Balanced Tags with Balancing Groups in .NET Regex
Balancing groups (?<name>) and (?<-name>) turn a .NET regex capture group into a stack, so one pattern can match arbitrarily nested parentheses or <div> tags. The full pattern, how the stack works, inner-content capture with (?<inner-open>), and the gotchas verified on .NET 11 RC1: the empty-stack check, catastrophic backtracking, NonBacktracking, and mixed bracket types.
- What Is a Compiled Model in EF Core 11, and When Is It Worth Enabling?
A compiled model is generated C# that recreates your EF Core model without running OnModelCreating. Measured on EF Core 11 RC1: model load drops from 714 ms to 215 ms at 500 entities, but the MSBuild route (which replaced EFOptimizeContext) is slower, stale models fail silently, and query filters block generation.
- What Is Transparent Struct Layout, and Why Does a Single-Field Wrapper Struct Change the Calling Convention in .NET?
A transparent struct is one the ABI treats exactly like its only field. .NET 11 has no such guarantee: a struct wrapping a double is passed in RCX on Windows x64 but in XMM0 on Linux and macOS. Here is the disassembly from the .NET 11 JIT on three ABIs, the P/Invoke bugs it causes, and how to write wrapper types that are safe at every boundary.
- What Is a Shadow Property in EF Core 11, and Why Did One Show Up in My Migration?
A shadow property is a column EF Core tracks without a matching CLR property. Here is why EF Core 11 creates them (missing FK properties, misnamed FKs, type mismatches, split relationships), how to spot the BlogId1 kind in a migration, how to fix each cause, and how to use shadow properties on purpose.
- AddDbContextPool vs AddDbContextFactory for running EF Core queries in parallel
AddDbContextPool hands out one scoped DbContext per DI scope, so it cannot run two queries at once. AddDbContextFactory and AddPooledDbContextFactory give you a context per call, which is what parallel queries need. Measured on EF Core 11 RC 1: the pooled factory creates a context in 342 ns and 40 B versus 17 us and 44 KB.
- C# Dev Kit 11.0 Collapses Six Processes Into One Native AOT Binary
C# Dev Kit 11.0 pre-release replaces six managed processes with a single Native AOT CSDevKit process and a persistent project cache. A 407-project Aspire solution is ready in 3.0s instead of 84.1s, using 316 MB instead of 2,072 MB.
- Fix: CS8509 or CS0161 on a switch that is exhaustive over a C# 15 union type
Switch on the union value, not .Value, and use a switch expression or add case null to a switch statement. Statements need null coverage that expressions only warn about.
2026 / 09
- Fix: launchSettings.json environment variables are ignored for a commandName: Executable profile
If your Executable profile runs dotnet run or dotnet watch, the inner command applies the default profile and overwrites your variables. Add --no-launch-profile, and use SDK 10.0.200+.
- Blazor Gets Agentic UI Components in .NET 11 RC1: ChatPage, UIAgent, and Tool Approvals
Microsoft.AspNetCore.Components.AI is an experimental Blazor package in .NET 11 RC1 that turns any IChatClient into a streaming chat UI with tool approvals, typed tool rendering, and shared state over AG-UI.
- Fix: dotnet watch Blazor hot reload WebSocket fails on a custom local domain (403)
Since the September 2026 .NET SDKs (10.0.112, 10.0.401, 11 RC1), dotnet watch rejects browser-refresh WebSockets from unknown origins. Set DOTNET_WATCH_AUTO_RELOAD_WS_ORIGINS to your host name.
- How to add a unique index on a JSON-mapped property in EF Core 11 (SQL Server and SQLite)
HasIndex(...).IsUnique() on a ToJson() member does not enforce uniqueness in EF Core 11 RC 1: SQL Server drops IsUnique and SQLite indexes the whole document. Expose the JSON value as a computed column and put the unique index on that instead.
- Fix: IConfiguration.Bind does not populate an array or List<T> property from appsettings.json
The binder silently skips array properties without a public setter, get-only IReadOnlyList<T>, fields and init-only members under the source generator, and it appends to defaults instead of replacing them. Measured on .NET 10.0.12 and 11 RC 1.
- How to serialize public fields like Vector3 and Quaternion with System.Text.Json
System.Text.Json writes Vector3 as {} and Quaternion as {"IsIdentity":false} because they store data in public fields. Here is how IncludeFields, a custom converter, a resolver modifier and source generation fix it, measured on .NET 10 and .NET 11 RC 1.
- How to disable antiforgery validation for a single minimal API form endpoint in ASP.NET Core 11
Call .DisableAntiforgery() on the one endpoint, or on a MapGroup. In ASP.NET Core 11 that opts out of both the token middleware and the new automatic CSRF check. Measured matrix, precedence traps, and narrower alternatives.
- How to add custom table-name pluralization to dotnet ef dbcontext scaffold with IPluralizer
A table named Gas scaffolds to an entity called Ga. Replace the built-in Humanizer pluralizer with your own IPluralizer, register it through IDesignTimeServices in the startup project, and learn why TryAddSingleton silently does nothing there.
- How to guarantee idempotent message processing with EF Core 11 when two app instances consume the same message
The existence check in your handler is not the guard you think it is. Put a unique index on the inbox table, write the marker in the same SaveChanges as the business change, and let the database pick the winner. Plus the ExecuteUpdate trap that quietly undoes all of it.
- How to keep a database write and an Azure Blob Storage upload consistent in a single ASP.NET Core request
There is no transaction that spans SQL Server and Blob Storage. Upload to a name the database already knows about, commit second, compensate on failure, and let a sweeper clean up the crash window. With the UploadAsync overload that silently turns a conditional create into an overwrite.
- How to apply custom naming conventions for primary keys, foreign keys, and indexes in EF Core 11 migrations
Rename every PK_, FK_, AK_ and IX_ that EF Core 11 generates with one IModelFinalizingConvention, keep explicit names winning, stay under the identifier length limit, and avoid the clustered-index rebuild the next migration scaffolds on an existing database.
- Migrate an EF Core Cosmos app after the generated id escaping change in EF Core 11
EF Core 11 stops escaping '/', '\', '?' and '#' in generated Cosmos DB id values, so documents written by EF Core 8-10 stop resolving by key. How to find out if you are affected, when to set the EscapeIllegalCosmosIdCharacters switch, and how to rewrite the ids safely with a transactional batch.
- Microsoft.Data.SqlClient vs System.Data.SqlClient in .NET 11
Use Microsoft.Data.SqlClient. System.Data.SqlClient is deprecated, already emits CS0618 on every type you touch, and loses its .NET assets when .NET 8 goes end of support on November 10, 2026, the same day .NET 11 ships. The measured feature gap, the Encrypt default that breaks the migration, and the 7.0 package split.
- Process.Run vs Process.Start in .NET 11: which should you use?
Use Process.Run when you start a tool and only care how it exited: one call, a timeout that kills the child, and a ProcessExitStatus with the signal. Keep Process.Start when you need the Process object: writing to stdin, reading output as it arrives, UseShellExecute, or killing a whole process tree.
- The .NET 11 JIT Devirtualizes Generic Virtual Methods, and the Allocation Goes With Them
Stephen Toub's Performance Improvements in .NET 11 post shows generic virtual method calls dropping from 6.7 ns and 24 bytes to 1.8 ns and zero allocation. Three RyuJIT pull requests unlocked inlining on the dispatch that used to be the most opaque one in .NET.
- SQL Server compatibility level 150 vs 160: what changes for EF Core 11 queries
EF Core 11 now defaults UseSqlServer to compatibility level 160, which puts LEAST, GREATEST and two-argument LTRIM/RTRIM into your SQL, including every Take(n).FirstOrDefault(). Keep 160 on SQL Server 2022 and later; pin UseCompatibilityLevel(150) if any environment still runs SQL Server 2019.
- Fix: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=7.0.0.0' after updating EF Core
EF Core 11 is compiled against Microsoft.Data.SqlClient 7.0.0.0, but a 6.x copy won the restore or the deploy. Remove the old SqlClient pin and redeploy the full output.
- How to Create and Extract ZIP Files Asynchronously with the ZipArchive Async APIs in .NET 11
Use ZipFile.CreateFromDirectoryAsync, ExtractToDirectoryAsync, ZipArchive.CreateAsync and ZipArchiveEntry.OpenAsync without hidden synchronous I/O. Measured on .NET 11 RC 1 and .NET 10.0.12, including the .NET 10 bug that still blocks Kestrel.
- How to bind a complex query-string object with [AsParameters] in a minimal API in ASP.NET Core 11
Put [AsParameters] on a class or record to bind a whole query-string filter in an ASP.NET Core 11 minimal API. Covers defaults, arrays, enums, nested objects, validation, OpenAPI, and a Native AOT generator bug with positional records.
- How to enable R8 shrinking and obfuscation for a .NET MAUI Android release build
Set AndroidLinkTool to r8, keep trimming on, and add a ProguardConfiguration file. Why .NET 10 and .NET 11 RC 1 still ship un-obfuscated Java, how the new AndroidR8ObfuscationMode property changes that, and how to verify R8 actually ran.
- How to intercept the Android back button on a .NET MAUI Shell root page
Override OnBackButtonPressed on the root page and run .NET MAUI 10.0.101 or later. Why root pages stopped receiving back presses from 10.0.70 (Android 16) and 10.0.100 (every Android version), why .NET 11 RC 1 is still affected, why Shell.OnNavigating and BackButtonBehavior.Command do not help, and a MainActivity workaround for the broken versions.
- .NET 11 RC 1 Makes dotnet publish Container Images Reproducible
The .NET 11 RC 1 SDK honors SOURCE_DATE_EPOCH when publishing container images, strips the process id from layer tar headers, and skips blob uploads when the registry already has the manifest. Same commit in, same digest out.
- How to escape % and _ wildcards in EF.Functions.Like and StartsWith queries in EF Core 11
StartsWith, EndsWith and Contains already escape % and _ for you in EF Core 11, but EF.Functions.Like does not. Here is the SQL EF generates, a reusable escape helper, and the escapeCharacter overload that makes it work on SQL Server, SQLite and PostgreSQL.
- Native json column vs nvarchar(max) for storing JSON in SQL Server with EF Core 11
Use the native json type on SQL Server 2025 and Azure SQL: EF Core 11 gets JSON_CONTAINS, typed JSON_VALUE, in-place modify() and JSON indexes out of it. Stay on nvarchar(max) for SQL Server 2019/2022, legacy tooling, or a schema you must be able to roll back.
- Lookup<TKey, TElement> vs Dictionary<TKey, List<TValue>> for duplicate keys in C#
Use ToLookup when you group once and only read: it is immutable, returns an empty sequence for missing keys, accepts null keys and keeps first-seen order. Use Dictionary<TKey, List<TValue>> when the groups change after construction or cross a JSON boundary.
- C# Unions in ASP.NET Core 11: Bodies, SignalR, and OpenAPI Work, Query Strings Do Not
The ASP.NET Core team mapped out where C# 15 union types flow through .NET 11: minimal API and MVC bodies, SignalR's JsonHubProtocol, Blazor, and OpenAPI anyOf schemas. Route, query, header, and form binding are not supported yet.
- SignalR in .NET 11 RC 1 Swaps an Expiring Token Without Dropping the Connection
The SignalR authentication refresh APIs are finalized in .NET 11 RC 1, with renamed callbacks on HubConnection, a TypeScript client, and Blazor Server circuits that pick up the refreshed ClaimsPrincipal automatically.
- .NET 11 RC 1 Lets You SIGTERM a Child Process Without P/Invoke
Signal, WaitForExitStatus, and ProcessExitStatus land directly on System.Diagnostics.Process in .NET 11 RC 1, so graceful shutdown of a child process no longer needs a kill P/Invoke or a SafeProcessHandle detour.
- How to consume an RFC 9457 ProblemDetails response from a typed HttpClient without referencing ASP.NET Core
The BCL has no ProblemDetails type, and adding a FrameworkReference to Microsoft.AspNetCore.App makes your client refuse to start on a runtime-only container. Here is the 20-line model that does the job, the DelegatingHandler that turns problem+json into a typed exception, and the content-type myth that most answers still repeat.
- How to find the async void handlers causing ANRs in a .NET MAUI Android app
Play Console tells you your ANR rate is over 0.47% and hands you a native stack full of libcoreclr.so frames. Here is how to get from that useless trace to the exact async void event handler that blocked the main thread, using a Looper printer, a SynchronizationContext wrapper that names the state machine, and dotnet-trace over dsrouter.
- How to use pessimistic locking with UPDLOCK and SELECT ... FOR UPDATE in EF Core 11
EF Core 11 still has no lock API. Here is how to take a real row lock with FromSql: WITH (UPDLOCK, ROWLOCK) on SQL Server, FOR UPDATE on PostgreSQL, the subquery trap that silently widens the lock, NOWAIT and SKIP LOCKED, deadlock retries, and what to do when the row does not exist yet.
- How to write an EF Core 11 value converter that maps a null in the database to a non-null value in code
EF Core never passes null to a value converter by default. Here is the internal convertsNulls constructor that changes that, the IsRequired(false) call it depends on, why it cannot work at all for enums and other value types, the WHERE col = NULL trap it creates, and the two patterns that do the job without an internal API.
- What is a Blazor render mode and which one runs my component?
A render mode decides where a Razor component executes and whether it is interactive. Here are the four modes in .NET 11, the propagation rules that decide what your component inherits, and the RendererInfo and AssignedRenderMode properties that tell you at runtime which one actually won.
- What is an EF Core interceptor and when do I need one?
An EF Core interceptor is a class EF calls before and after operations like executing a command or SaveChanges, and it can modify or suppress them, not just observe. Here are the seven interception points in EF Core 11, the registration and lifetime rules, and the cases where a query filter or plain logging is the better answer.
- Migrate a .NET MAUI Android app to target Android API level 36
Google Play required target API 36 from 2026-08-31, with extensions running to 2026-11-01. Here is the full .NET MAUI path from net9.0-android to API 36: the target framework bump, the hardcoded uses-sdk that silently pins you to the old level, edge-to-edge with no opt-out, predictive back, and the large-screen orientation rules.
- What is the W^X flag in .NET and does Native AOT need it?
W^X (write xor execute) is the rule that no memory page is writable and executable at the same time. In .NET it is the DOTNET_EnableWriteXorExecute knob, on by default since .NET 7, and it exists entirely for the JIT. Native AOT never reads it. Here is how the runtime implements it, what it costs, and when turning it off is a legitimate fix.
- Migrate a .NET MAUI Android app from Mono to CoreCLR in .NET 11
A step-by-step migration off Mono onto CoreCLR for .NET MAUI on Android: the API 24 floor, the Mono-only MSBuild properties that now break your build, why your APK grew, how to profile the startup regression with dotnet-dsrouter and dotnet-trace, and what a rollback actually looks like now that the Mono path is gone.
- Migrate from VSTest to Microsoft.Testing.Platform on the .NET 11 SDK
A step-by-step migration from VSTest to Microsoft.Testing.Platform 2.3.3: the OutputType Exe opt-in, the global.json runner switch, loggers becoming reporters, .runsettings becoming testconfig.json, and the exit codes that turn a green CI job red.
- Migrate off BinaryFormatter after its removal in modern .NET
BinaryFormatter's implementation was deleted in .NET 9 and still throws PlatformNotSupportedException on .NET 10 and .NET 11: how to choose a replacement serializer, read already-persisted NRBF blobs with NrbfDecoder, and what breaks in WinForms, WPF, and ResX.
- Framework-dependent vs self-contained vs Native AOT for a .NET 11 container image
Framework-dependent on a chiseled aspnet image is the right default for an ASP.NET Core service on .NET 11, because the runtime layer is shared across services and a runtime CVE is fixed by a base image bump. Self-contained trimmed and Native AOT buy a 2x to 5x smaller image and a much faster cold start, and cost you that. Real published sizes, the layer-sharing math, and the .NET 11 base image inference bug that breaks the AOT path.
- Migrate a test project from xUnit v2 to xUnit v3 (2.9.3 to 4.0.0)
A step-by-step migration from xunit 2.9.3 to xunit.v3 4.0.0: package swaps, the OutputType Exe change, IAsyncLifetime returning ValueTask, the Xunit.Abstractions removal, and the CI filter syntax that silently stops matching.
- Returning a Task directly vs async/await passthrough in a C# repository method: which should you use?
Eliding async/await in a repository passthrough saves about 6 ns and 72 bytes, and costs you a stack frame, try/catch semantics, and safe disposal. Keep return await unless the method is a pure passthrough on a measured hot path.
2026 / 08
- Fix: 23505: duplicate key value violates unique constraint on a concurrent EF Core insert
The check-then-insert in your handler is not atomic. Catch PostgresException with SqlState 23505, or collapse the whole thing into one INSERT ... ON CONFLICT statement. EnableRetryOnFailure will not help.
- Fix: CREATE DATABASE permission denied in database 'master' when running dotnet ef database update
EF Core's Migrate() always checks whether the database exists and creates it if not, from a hardcoded master connection. Grant CREATE ANY DATABASE, fix the login's access to the existing database, or ship an idempotent SQL script instead.
- Fix: Doesn't support required ABI when installing a .NET MAUI Android app
The APK has no native library for the device's CPU. Since .NET 9 the default Android RuntimeIdentifiers are 64-bit only, so the fix is to set RuntimeIdentifiers explicitly. Covers ADB0020, XA0036, NETSDK1083, the ABI to RID mapping, the Play Console wording, and why the four-RID snippet everyone copies breaks on .NET 11.
- Fix: failed to resolve source metadata for mcr.microsoft.com/dotnet/aspnet
BuildKit cannot read the manifest for your base image. Check the tag exists, repair the Docker credential helper, open both MCR endpoints, then pre-pull for offline builds.
- Aspire 13.5 Puts a Real Terminal Inside the Dashboard
WithTerminal() gives a resource an interactive PTY session you can type into from the dashboard or attach to from your own shell. It is experimental, it detaches the debugger, and the Shell option you may have written against is gone.
- ASP.NET Core Stops Turning 413 Into 500 in UseExceptionHandler
A PR merged into dotnet/aspnetcore main on August 19, 2026 makes ExceptionHandlerMiddleware honour BadHttpRequestException.StatusCode instead of overwriting it with 500.
- Fix: [FromForm] Dictionary<string, string> is always null in a minimal API
A [FromForm] Dictionary in a minimal API binds with an empty prefix: the form keys must be [key], not metadata[key]. Wrap it in a class to keep readable names.
- Fix: cannot target OpenAPI 3.0 after upgrading Swashbuckle.AspNetCore to v9
Swashbuckle 8 and later emit openapi 3.0.4, not 3.0.1, and there is no OpenApiSpecVersion for a patch version. Why it changed, and four ways to pin the string your tooling expects.
- Fix: Swagger UI shows Unable to render this definition after upgrading to .NET 11
ASP.NET Core 11 emits openapi 3.2.0 by default and Swagger UI below 10.1.5 rejects it. Upgrade Swashbuckle.AspNetCore.SwaggerUI, or pin OpenApiVersion back to OpenApi3_1.
- MSBuild Server Is On by Default in .NET 11 Preview 7
Preview 7 flips MSBuild server from opt-in to on by default, so back-to-back dotnet build and dotnet test calls reuse a warm worker process. Here is what changed, how to opt out, and how to prove the server actually engaged.
- How to generate a primary key from a database sequence on insert in EF Core 11
Move a key off IDENTITY and onto a SQL Server sequence in EF Core 11 with UseSequence: the exact SQL EF emits, why explicit key values suddenly work without IDENTITY_INSERT, the bigint sequence feeding an int column, and the gaps you have to design around.
- How to download a file from a Blazor component without JavaScript interop
Skip the downloadFileFromStream JS module entirely. Render an anchor with the download attribute pointing at a minimal API endpoint that returns TypedResults.File, or POST a plain HTML form with an AntiforgeryToken. Covers why the download attribute is what stops Blazor's enhanced navigation from swallowing the click, why data-enhance silently discards the file, and the cookie-vs-bearer auth trap.
- How to use IDbContextFactory<T> from a singleton service in Blazor
A singleton cannot inject a DbContext, but it can inject IDbContextFactory<T>, because AddDbContextFactory registers the factory as a singleton by default. Create and dispose one context per call, never cache the instance.
- System.IO.Compression Finally Reads and Writes Encrypted ZIPs in .NET 11 Preview 7
.NET 11 Preview 7 adds password-protected ZIP entries to System.IO.Compression, with AES-256 support, options types for whole-directory operations, and one empty-file bug that is already fixed in main.
- Scalar vs Swagger UI for OpenAPI documentation in ASP.NET Core 11
Scalar ships 1.02 MiB of gzipped JavaScript and a far better request builder. Swagger UI ships 514 KiB and renders OpenAPI 3.2, which is what .NET 11 now emits by default. Measured payloads, the 3.2 gap, endpoint routing on both sides, and the auth details that decide it.
- Zstandard vs Brotli vs Gzip response compression in .NET 11
Zstandard is the right default for dynamic API responses in .NET 11, but not at the quality the ASP.NET Core provider ships with. Benchmarks on real JSON payloads showing why quality 1 beats the default quality 3 on both size and CPU, when Brotli still wins, and why Gzip survives only as a fallback.
- Blazor Server Circuits Now Pause Themselves When the Tab Goes Idle
.NET 11 Preview 7 adds an opt-in package that pauses interactive Server circuits when the browser tab is hidden, freeing memory and SignalR connections held by users who are not actually there.
- Fix: 404 Not Found for blazor.server.js after installing a new .NET SDK
blazor.server.js 404s on .NET 10 because the script stopped being an embedded resource. Add RequiresAspNetWebAssets to the host project, or make sure it has a .razor file.
- C# 15 Gets Labeled break and continue in .NET 11 Preview 7
Labeled break and continue landed in the C# section of .NET 11 Preview 7. You can now put a label on a loop and jump straight to it, which retires the bool flag and goto workarounds for nested loops.
- Fix: dotnet tool install --global dotnet-ef throws an error
Every way dotnet tool install --global dotnet-ef fails on the .NET 10 SDK, with the exact message and exit code for each: already installed, version not found, downgrade blocked, shim conflict, dead NuGet feed, and the runtime mismatch that only breaks after the install succeeds.
- Fix: The 'interceptors' feature is not enabled in this namespace
CS9137 comes from the Microsoft.AspNetCore.OpenApi source generator. Add InterceptorsNamespaces to every project that calls AddOpenApi, not just the one holding the PackageReference.
- Fix: The type or namespace name 'OpenApiReference' could not be found
OpenApiReference was deleted in Microsoft.OpenApi 2.0. Changing the using to Microsoft.OpenApi is not enough: replace each usage with a typed reference such as OpenApiSchemaReference.
- How to call a stored procedure and map its results in EF Core 11
Use FromSql on a DbSet when the procedure returns full entity rows, Database.SqlQuery<T> when it returns a projection, and ExecuteSql when it returns nothing. Never chain a LINQ operator onto an EXEC, and never read an output parameter before the reader is disposed.
- How to customize source-generated System.Text.Json serialization with a type-info resolver modifier
Attach a JsonTypeInfo modifier to a source-generated JsonSerializerContext in .NET 11: why new MyContext(options) silently drops it, the WithAddedModifier setup that works, the fast path you give up (measured), and the naming-policy trap that makes modifiers no-op.
- How to override the default resilience handler that Aspire registers
Aspire's AddServiceDefaults applies a standard resilience handler to every HttpClient. Calling AddStandardResilienceHandler again stacks a second one instead of replacing it. Here are the three real override paths, the -standard options name nobody documents, and the infinite timeout you inherit if you just remove it.
- How to rename a table in an EF Core 11 migration without losing data
EF Core scaffolds RenameTable when you change the table name, but DropTable plus CreateTable when you rename the entity class. Here is how to tell the two apart, the ToTable trick that makes a class rename free, and the column-rename bug that silently swaps your data.
- How to run a file-based C# app with `dotnet run app.cs` in .NET 11
A complete guide to file-based C# apps: running a single .cs file with dotnet run, the #:package, #:sdk, #:property, #:project and #:include directives, multi-file scripts with #:ref, argument and stdin handling, the build cache, native AOT publishing, packaging as a dotnet tool, and dotnet project convert when the script outgrows itself.
- How to serve OpenAPI documentation with Scalar instead of Swagger UI in ASP.NET Core 11
Replace UseSwaggerUI with MapScalarApiReference in ASP.NET Core 11: routing, multiple documents, pre-filled auth, production gating, offline assets, and the Scalar-only OpenAPI extensions that mark endpoints stable or hidden.
- Fix: Attempting to reconnect to the server after a Blazor Server circuit disconnects
The reconnect modal means the SignalR circuit dropped, not that your app crashed. Decide whether the retry ended in failed or rejected, then fix sticky sessions, the 3-minute retention window, the 32 KB message limit, or persist circuit state with [PersistentState].
- gRPC vs REST vs SignalR for service-to-service calls in .NET 11
For internal service-to-service calls in .NET 11, default to gRPC when you own both ends of the contract and the call is point-to-point. Use REST with JSON when anything you do not control has to call the service. SignalR is not an RPC transport between services: reach for it only when one producer has to fan a message out to many long-lived consumers.
- Fix: AggregateException "One or more errors occurred" when awaiting Task.WhenAll in C#
await Task.WhenAll rethrows only one of the failures. Keep the WhenAll task in a variable and read its Exception.InnerExceptions to see every error instead of one.
- Fix: HTTP Error 500.30 - ASP.NET Core app failed to start after deploying to IIS
500.30 means your app threw during startup inside w3wp.exe. The real exception is already in the Windows Application event log under IIS AspNetCore Module V2. Read that first, then rank the fix: missing shared framework, x86/x64 app pool mismatch, missing config, or app pool permissions.
- How to implement optimistic concurrency with a rowversion token in EF Core 11
Add a rowversion concurrency token in EF Core 11: the [Timestamp] and IsRowVersion setup, the SQL EF actually emits, catching DbUpdateConcurrencyException, store-wins vs client-wins vs merge, disconnected APIs with ETags, and the five traps that silently disable the whole thing.
- How to store an enum as a string in EF Core 11 with a value converter
Store C# enums as readable strings instead of ints in EF Core 11: HasConversion, bulk configuration for every enum, the nvarchar(max) trap, the ordering gotcha, and how to migrate an existing int column.
- How to validate options at startup with IValidateOptions<T> in .NET 11
Implement IValidateOptions<T>, register it in DI, and chain ValidateOnStart so a bad appsettings.json kills the process instead of the first request that touches it. Covers the .NET 11 Validate<TValidator>() overload, async validation through IAsyncValidateOptions<T>, and the three places ValidateOnStart silently does nothing.
- How to configure Kestrel to serve HTTP/3 in ASP.NET Core 11
A complete guide to enabling HTTP/3 on Kestrel in ASP.NET Core 11: the HttpProtocols.Http1AndHttp2AndHttp3 endpoint config, MsQuic platform requirements on Windows, Linux, and macOS, why the first request is never HTTP/3, how to verify with HttpClient and middleware, QuicTransportOptions tuning, and the firewall and proxy gotchas that make it silently fall back.
- How to replace new Regex(...) with the [GeneratedRegex] source generator in .NET 11
A complete guide to converting new Regex(pattern, RegexOptions.Compiled) into [GeneratedRegex] in .NET 11: the mechanical rewrite, partial methods vs partial properties, measured startup and throughput numbers, the SYSLIB1040-1045 diagnostics, and the two patterns where the generator silently falls back to a cached Regex.
- How to run CPU-bound work in a Blazor WebAssembly app with Web Workers in .NET 11
A complete guide to offloading CPU-bound work off the Blazor WebAssembly UI thread in .NET 11: why Task.Run does not help, the new blazorwebworker template, the WebWorkerClient API with cancellation and timeouts, the JSExport marshalling limits, and the second-runtime cost you pay per worker.
- IOptions<T> vs IOptionsSnapshot<T> vs IOptionsMonitor<T> in .NET 11
Default to IOptions<T>. Use IOptionsMonitor<T> when a singleton has to see config reloads, and IOptionsSnapshot<T> only when a scoped consumer wants a value that is stable for one request. The deciding axis is the lifetime of the consumer, not the shape of the settings.
2026 / 07
- Fix: JavaScript interop calls cannot be issued at this time (Blazor prerendering)
Prerendering runs your component on the server with no browser attached, so IJSRuntime throws. Move the call into OnAfterRenderAsync, gate it on RendererInfo.IsInteractive, or disable prerendering.
- Fix: Your startup project doesn't reference Microsoft.EntityFrameworkCore.Design
Add Microsoft.EntityFrameworkCore.Design to the startup project that dotnet ef builds, not the project holding your DbContext, and pass -s in layered solutions.
- Fix: Reflection-based serialization has been disabled for this application
This InvalidOperationException means PublishTrimmed or PublishAot flipped JsonSerializerIsReflectionEnabledByDefault to false. Fix it with a source-generated JsonSerializerContext.
- Fix: "The model for context 'X' has pending changes" in EF Core 11
EF Core throws PendingModelChangesWarning when your model no longer matches the last migration snapshot. Add the migration, or fix the false positive behind it.
- How to apply EF Core 11 migrations in production with dotnet ef migrations bundle
A complete guide to deploying EF Core 11 schema changes with migration bundles: building efbundle in CI, the appsettings.json trap with named connection strings, self-contained bundles and the Alpine musl RID, migration locking since EF Core 9, rolling back with a target migration, and why per-migration transactions do not save you on MySQL.
- How to use Shell route parameters and query properties for navigation in .NET MAUI 11
A complete guide to passing data through Shell navigation in .NET MAUI 11: registering global routes, string query parameters, QueryPropertyAttribute vs IQueryAttributable, the URL-decoding asymmetry between the two, single-use ShellNavigationQueryParameters vs the IDictionary overload that leaks, passing data backwards with ..?key=value, and why QueryPropertyAttribute is not trim safe.
- How to diagnose a managed memory leak with dotnet-gcdump and dotnet-dump
A complete workflow for finding a managed memory leak in .NET 11: confirm growth with dotnet-counters, take two gcdumps and diff them, then collect a dump and use dumpheap, gcroot, and objsize in dotnet-dump analyze to find what is still holding the reference.
- How to publish a .NET 11 app as a container image with dotnet publish /t:PublishContainer
A complete guide to building container images from a .NET 11 app with no Dockerfile: the PublishContainer target, ContainerRepository and ContainerImageTags, base image selection through ContainerBaseImage and ContainerFamily, pushing to a registry and how authentication resolves, multi-arch OCI image indexes, the non-root default user, entrypoint control, tarball output for scanners, and the cases where you still need a Dockerfile.
- How to serialize a polymorphic type hierarchy with JsonDerivedType in System.Text.Json
A complete guide to polymorphic JSON in .NET 11: JsonDerivedType and JsonPolymorphic, why the declared type decides everything, the $type ordering rule, every exception the feature throws, the contract model for types you do not own, and what ASP.NET Core emits in OpenAPI.
- How to add Aspire to an existing ASP.NET Core solution without restructuring it
Add Aspire 13.4 to a brownfield ASP.NET Core solution by adding two new projects and three lines per service: aspire init, AppHost wiring with AddProject and WithReference, keeping your existing launchSettings.json and connection strings, and the resilience, health-endpoint, and proxy gotchas that bite on day one.
- How to test time-dependent code with TimeProvider and FakeTimeProvider in .NET 11
Replace DateTime.UtcNow, Stopwatch, and Task.Delay with System.TimeProvider so tests can control the clock: DI registration, FakeTimeProvider.Advance and SetUtcNow, testing timeouts and PeriodicTimer-based BackgroundServices, plus the Advance-continuation and xUnit v2 gotchas.
- How to write integration tests with WebApplicationFactory<T> in ASP.NET Core 11
A complete guide to WebApplicationFactory<TEntryPoint> in ASP.NET Core 11: making the Program entry point reachable, ConfigureTestServices vs ConfigureWebHost, replacing the EF Core registration through IDbContextOptionsConfiguration, the new ConfigureHostApplicationBuilder hook in .NET 11 preview 6, faking authentication, WebApplicationFactoryClientOptions, and UseKestrel when you need a real port.
- Migrate from blocking .Result/.Wait() calls to async all the way up in a legacy C# codebase
A staged playbook for removing sync-over-async from an existing .NET codebase: inventory with analyzers, measure ThreadPool starvation, convert one call chain at a time, and ratchet the count to zero on .NET 11.
- Migrate from ILogger string interpolation to structured logging message templates in .NET 11
A step-by-step guide to converting $-interpolated ILogger calls into message templates and [LoggerMessage] source-generated methods on .NET 11: what breaks, how to sweep a codebase with CA2254, how to verify the JSON state, and how to roll back.
- Endpoint filters vs middleware in ASP.NET Core 11: which should you use?
A decision guide for ASP.NET Core 11: middleware runs for every request before your handler binds, endpoint filters run only for the matched endpoint after binding and can see the typed arguments. Includes a feature matrix, when-to-pick-each scenarios, the ordering rules, and the gotchas that force the choice.
- Migrate Swashbuckle IOperationFilter and ISchemaFilter to OpenAPI transformers in .NET 11
A filter-by-filter porting reference for moving Swashbuckle IOperationFilter and ISchemaFilter code to the built-in operation and schema transformers in .NET 11, with the context-object field mapping and the Microsoft.OpenApi v2 changes that bite.
- .Result vs .Wait() vs GetAwaiter().GetResult() vs await in C#: which should you use?
await is the right answer almost every time. When you truly must block, GetAwaiter().GetResult() beats .Result and .Wait() because it throws the original exception. A decision matrix for .NET 11 and C# 14.
- SignalR clients can finally cancel a running hub method in .NET 11 Preview 6
Cancelling the CancellationToken you pass to InvokeAsync now reaches the server and cancels the hub method. This closes a SignalR request open since 2019.
- Typed results (Results<>) vs IResult vs IActionResult in ASP.NET Core 11
In ASP.NET Core 11, return Results<T1, TN> with TypedResults for minimal APIs and ActionResult<T> for controllers. Treat bare IResult and bare IActionResult as escape hatches: they compile for any response but describe nothing to OpenAPI, so you pay for them in hand-written ProducesResponseType attributes.
- WebApplication.CreateBuilder vs CreateSlimBuilder vs CreateEmptyBuilder in ASP.NET Core 11
Use CreateBuilder for a normal app, CreateSlimBuilder when you publish trimmed or Native AOT behind a TLS proxy, and CreateEmptyBuilder only when you want to register every service yourself. Here is the feature matrix and the gotchas that force the call.
- Complex types vs owned entities in EF Core 11: which should you pick?
On EF Core 11, default to complex types for value objects and drop to owned entities only when you need a separate table or a collection mapped to its own rows.
- Output caching vs response caching in ASP.NET Core 11: which should you use?
Output caching is the right default for almost every server-side app in ASP.NET Core 11. Response caching only wins when your goal is to steer browser and proxy caches through HTTP headers. Here is the decision, with a feature matrix and the gotchas that force the call.
- TPH vs TPT vs TPC inheritance mapping in EF Core 11: which should you pick?
On EF Core 11, default to TPH for almost every hierarchy, reach for TPC only when you mostly query one leaf type and a benchmark proves it wins, and use TPT only when an external constraint forces you to.
- Fix: CS4014 "Because this call is not awaited, execution of the current method continues" in C#
CS4014 means you called a Task-returning method without awaiting it. Add await, or discard with _ = if fire-and-forget is truly intended, and handle exceptions.
- Fix: System.InvalidOperationException: Sequence contains no elements
This exception means you called .First() or .Single() on an empty sequence. Use FirstOrDefault/SingleOrDefault and null-check, or guard the query, or fix why the source is empty.
- System.Text.Json Learns to Serialize C# Union Types in .NET 11 Preview 6
How System.Text.Json in .NET 11 Preview 6 serializes the new C# union types by writing the active case, and the JsonUnionAttribute and type-classifier APIs that handle ambiguous cases.
- Async validation lands in Minimal APIs with .NET 11 Preview 6
Preview 6 adds AsyncValidationAttribute and IAsyncValidatableObject so DataAnnotations rules can hit the database before your endpoint runs, without blocking a thread.
- Fix: CS8618 "Non-nullable property must contain a non-null value when exiting constructor" in C#
CS8618 means a non-nullable field or property was not initialized by the time the constructor finished. Set it in the constructor, give it a default, mark it required, or make it nullable.
- Fix: deadlock when calling .Result or .Wait() on an async method in C#
Blocking on an async Task with .Result or .Wait() deadlocks when a SynchronizationContext is present. Here is why it hangs and how to fix it in .NET 11 and C# 14.
- How to add a health check endpoint to a minimal API in ASP.NET Core 11
A complete, working guide to health checks in an ASP.NET Core 11 minimal API: AddHealthChecks and MapHealthChecks, custom IHealthCheck classes returning Healthy/Degraded/Unhealthy, the AddDbContextCheck EF Core probe, tag-based liveness and readiness endpoints for Kubernetes, a JSON ResponseWriter, ResultStatusCodes, securing the endpoint with RequireAuthorization and RequireHost, and pushing results with IHealthCheckPublisher.
- How to add an endpoint filter to a minimal API in ASP.NET Core 11
A complete, working guide to endpoint filters in an ASP.NET Core 11 minimal API: AddEndpointFilter with an inline delegate, IEndpointFilter classes with DI, GetArgument and the Arguments list, short-circuiting with Results.Problem, FIFO/FILO ordering across multiple filters, group-level filters on MapGroup, and AddEndpointFilterFactory for signature-aware filters.
- MAUI Mobile Is CoreCLR Only in .NET 11 Preview 6: The Mono Escape Hatch Is Gone
.NET 11 Preview 6 removes the separate Mono path for MAUI on Android, iOS, and Mac Catalyst. CoreCLR is now the only mobile runtime, the UseMonoRuntime escape hatch is closed, and GA is set for November 2026.
- C# 15 Extension Indexers Round Out Extension Members in .NET 11 Preview 6
Extension indexers landed in .NET 11 Preview 6, letting you add this[...] access to types you do not own. They complete the extension members story that started with methods and properties in C# 14.
- ASP.NET Core 11 Preview 6 turns on automatic CSRF protection
Preview 6 rejects unsafe cross-origin browser requests by default, reading the Sec-Fetch-Site header instead of an antiforgery token. Here is what it blocks and how to opt out.
- Fix: "413 Request Entity Too Large" when uploading a file to an ASP.NET Core endpoint
Kestrel caps request bodies at 30,000,000 bytes by default and returns 413 when you exceed it. Raise MaxRequestBodySize globally, per endpoint, or in web.config behind IIS.
- Fix: System.InvalidOperationException: Headers are read-only, response has already started
You set a header, status code, or content type after the body was already flushed. Set all headers before the first write, or guard with HttpResponse.HasStarted and OnStarting.
- Fix: "The property could not be mapped, because it is not a supported primitive type or a valid entity type" in EF Core 11
EF Core hit a property it does not know how to store. Map it as a complex type, convert it with HasConversion, give it a key, or ignore it with [NotMapped].
- How to add response compression to an ASP.NET Core 11 API
A complete guide to response compression in ASP.NET Core 11: AddResponseCompression and UseResponseCompression, the new built-in Zstandard provider alongside Brotli and Gzip, compression levels, EnableForHttps and the CRIME/BREACH risk, custom MIME types, middleware ordering, and when to let the reverse proxy do it instead.
- How to return a typed Results<T1, T2> union from a minimal API endpoint in ASP.NET Core 11
Declare the handler's return type as Results<Ok<T>, NotFound> and return TypedResults.Ok / TypedResults.NotFound: the union gives compile-time checking that the handler only returns what it declares, and it self-describes to OpenAPI so you never write .Produces by hand. Covers async handlers, the six-type limit, and testing in ASP.NET Core 11.
- How to configure table-per-hierarchy (TPH) inheritance mapping in EF Core 11
TPH is EF Core's default inheritance strategy: one table, one discriminator column. Here is how to configure the discriminator, share columns, handle nullable derived properties, and the gotchas on EF Core 11.
- How to add output caching to a minimal API in ASP.NET Core 11
A complete, working guide to output caching in an ASP.NET Core 11 minimal API: AddOutputCache and UseOutputCache, CacheOutput on endpoints and MapGroup, named and base policies, Expire, VaryByQuery and VaryByHeader, tag-based eviction with EvictByTagAsync, cache stampede protection, ETag revalidation, and a Redis backing store.
- How to customize the OpenAPI document with AddOperationTransformer and AddSchemaTransformer in ASP.NET Core 11
A deep dive into the built-in OpenAPI transformer pipeline in .NET 11: operation vs schema transformers, the context objects, execution order, DI-activated transformers, and recipes for headers, responses, examples, and per-property tweaks.
- How to map a complex type instead of an owned entity in EF Core 11
Owned entities carry a hidden key and reference identity that fights value objects. Here is how to map a value object as a complex type in EF Core 11, when to switch, and the gotchas.
- .NET 11 Runtime Async Drops the EnablePreviewFeatures Flag
As the .NET 11 previews progress toward the November release, Runtime Async has graduated: net11.0 projects opt in with a single MSBuild property, and the runtime libraries themselves now ship compiled on it.
- What is PGO in .NET and do I need to opt in?
PGO (profile-guided optimization) lets the .NET JIT specialize hot code for the types and branches your workload actually hits. Dynamic PGO has been on by default since .NET 8, so on .NET 8 and later you do not need to opt in. Here is what it does, how to see its effect, and the rare cases where you touch the knob.
- What is tiered compilation and how do I reason about it?
Tiered compilation lets the .NET JIT compile every method twice: once fast and unoptimized to get your app running, then again with full optimizations once the runtime knows a method is hot. Here is how tier 0, tier 1, on-stack replacement, and Dynamic PGO fit together, and how to observe and tune them.
- What is the difference between dotnet build and dotnet publish?
dotnet build compiles your project for the inner development loop and defaults to Debug. dotnet publish runs the MSBuild Publish target, defaults to Release on net8.0 and later, and packages a deployable folder with web assets, self-contained runtimes, single-file, trimming, and AOT handled. Here is exactly what each one produces and when to reach for it.
- What is the difference between dotnet watch and dotnet run?
dotnet run builds your project once and launches it. dotnet watch wraps dotnet run in a file watcher: it relaunches or hot reloads the app every time you save a source file. Here is exactly what each one does, what dotnet watch sets that dotnet run does not, and when to reach for which.
- Migrate a minimal API from manual validation checks to built-in validation in ASP.NET Core 11
A step-by-step migration guide for replacing hand-rolled if-checks in ASP.NET Core 11 minimal API handlers with the built-in source-generated DataAnnotations validator: what breaks, which manual rules do and do not port, and how to verify the 400 ProblemDetails contract stays identical.
- Migrate From the OpenAI SDK to Microsoft.Extensions.AI in a .NET App
A step-by-step checklist for moving a .NET app off the raw OpenAI 2.12 SDK onto the provider-neutral Microsoft.Extensions.AI 10.7 IChatClient. Covers the AsIChatClient bridge, the CompleteChatAsync-to-GetResponseAsync rewrite, streaming, tool calling, DI registration, and the gotchas that bite mid-cutover.
- What is trim-safe code and how do I write it?
Trim-safe code is code the .NET trimmer can statically prove is reachable, so it survives when unused code is removed from a self-contained app. This is the practical guide: turn on the analyzer, drive every IL2xxx warning to zero, annotate reflection with DynamicallyAccessedMembers, propagate RequiresUnreferencedCode to public APIs, and replace unanalyzable patterns with source generators.
- Fix: "415 Unsupported Media Type" from a minimal API endpoint in ASP.NET Core 11
A minimal API returns 415 when the request Content-Type does not match what the endpoint binds. Send Content-Type: application/json for a body-bound type, or use [FromForm] for form and file uploads.
- Fix: CS9035 "Required member 'X' must be set in the object initializer" in C#
CS9035 means a member marked required was not assigned. Set it in the object initializer, or add a constructor annotated with [SetsRequiredMembers] that assigns every required member.
- How to customize minimal API validation error responses with IProblemDetailsService in ASP.NET Core 11
Call AddProblemDetails with a CustomizeProblemDetails callback to reshape the 400 that built-in minimal API validation returns in ASP.NET Core 11: add a traceId, rewrite the title, switch 400 to 422, or take full control with a custom IProblemDetailsWriter.
- How to set up JWT bearer authentication in a minimal API in ASP.NET Core 11
A complete, working setup for JWT bearer authentication in an ASP.NET Core 11 minimal API: install the package, wire up AddAuthentication().AddJwtBearer(), issue a token, protect endpoints with RequireAuthorization, add role and claim policies, and test the whole thing with dotnet user-jwts.
- How to propagate a CancellationToken through async methods in .NET 11
Thread a CancellationToken cleanly through every layer of an async call chain in .NET 11: last-parameter convention, default values, linked tokens, ASP.NET Core RequestAborted, and the CA2016 analyzer that catches the ones you drop.
- How to time out an async operation with CancellationTokenSource.CancelAfter in C#
Use CancellationTokenSource.CancelAfter to enforce an async deadline in .NET 11: constructor vs CancelAfter, linked tokens for composing timeouts with caller tokens, exception disambiguation, Task.WaitAsync, TryReset for pooling, and testable timeouts with TimeProvider.
2026 / 06
- Fix: FOREIGN KEY constraint failed when deleting an entity in EF Core 11
EF Core throws FOREIGN KEY constraint failed because the parent still has dependents the database refuses to orphan. Load the children, make the relationship optional, or configure OnDelete.
- Fix: No service for type 'Microsoft.EntityFrameworkCore.DbContextOptions' has been registered
EF Core throws this when AddDbContext never ran, ran after Build, or your context's constructor takes the wrong DbContextOptions. Register before Build and use DbContextOptions<YourContext>.
- Fix: 405 Method Not Allowed instead of 401 with JWT bearer in ASP.NET Core
A protected endpoint returning 405 instead of 401 almost always means routing rejected the HTTP verb before auth ran, or a cookie scheme stole the challenge. Here is how to tell which.
- Why your ASP.NET Core JWT returns 401 even with a valid token
A valid token that still 401s almost always means the bearer handler never ran or ran under the wrong scheme. Check middleware order, the default scheme, the scheme name, and whether the header even reached the handler.
- Fix: The seed entity for entity type 'X' cannot be added because a non-zero value is required for property 'Id'
HasData seeds an entity with a store-generated key but no explicit value. Give every seed row a stable non-zero Id, or switch to UseSeeding for generated keys.
- How to declare extension properties in C# 14
Extension properties land in C# 14 through the new extension block. Declare get-only, settable, static, and generic extension properties, why auto-properties are rejected, and how the compiler lowers them to get_/set_ accessors.
- .NET 11 Preview 5 lets file-based apps reference each other with `#:ref`
.NET 11 Preview 5 adds the #:ref directive so a dotnet run script can reference another file-based app as a library, with transitive references and no project file.
- How to do keyset (cursor) pagination in EF Core 11
Replace Skip/Take with a WHERE clause that seeks past the last row you saw. Order by a fully unique key, carry the last row's values as a cursor, and EF Core 11 turns the next page into an index seek instead of an OFFSET scan.
- How to map and query JSON columns in EF Core 11
Map a nested type to a single JSON column with ComplexProperty(...).ToJson(), let EF Core 11 store it in the native SQL Server 2025 json type, then query into it with LINQ that translates to JSON_VALUE, JSON_CONTAINS, and JSON_PATH_EXISTS.
- How to register and resolve keyed services in .NET 11 dependency injection
Register more than one implementation of the same interface under a key with AddKeyedSingleton/Scoped/Transient, then resolve them with [FromKeyedServices], GetRequiredKeyedService, or KeyedService.AnyKey. The keyed and non-keyed registries are separate, which is the gotcha that bites most people.
- How to validate a JWT's issuer, audience, and lifetime in ASP.NET Core 11
A complete guide to TokenValidationParameters in ASP.NET Core 11: how ValidateIssuer, ValidateAudience, and ValidateLifetime work, what the defaults actually are, why Authority auto-configures the issuer and signing keys, the 5-minute ClockSkew trap, and how to read the IDX error codes when a valid-looking token is rejected.
- C# 15 Closed Class Hierarchies: The closed Keyword in .NET 11 Preview 5
C# 15 adds the closed modifier in .NET 11 Preview 5, giving class hierarchies compile-time exhaustiveness in switch expressions. Here is how it works and the one gotcha.
- How to configure CORS for a JWT-protected API in ASP.NET Core 11
A complete guide to CORS for a bearer-token API in ASP.NET Core 11: the correct UseCors ordering relative to authentication, why a bearer token in the Authorization header is not a CORS credential, why AllowAnyHeader works but a manual wildcard does not cover Authorization, and how to keep preflight from failing.
- What is the DynamicallyAccessedMembers attribute?
DynamicallyAccessedMembers tells the .NET trimmer and AOT compiler which members of a Type you reach by reflection, so they are kept instead of trimmed away. It turns a silent runtime MissingMethodException into a build-time IL2070 warning. Here is what the attribute does, how the data-flow analysis behind it works, and how to annotate parameters, fields, and generic type parameters correctly.
- What is ValueTask<T> and when is it worth it?
ValueTask and ValueTask<T> are structs that let an async method return a result without heap-allocating a Task when it completes synchronously. The win is one fewer allocation on hot paths that usually finish without awaiting. The cost is a strict await-once contract. Here is what the type actually is, how it works, and the narrow set of cases where it earns its keep.
- What is a source generator and when do I need one?
A plain-language guide to C# source generators: what they actually do, how the IIncrementalGenerator pipeline works, when they beat reflection or T4, and the cases where you should not reach for one. With runnable examples on .NET 11 and C# 14.
- What is IAsyncEnumerable<T> and when should I use it?
IAsyncEnumerable<T> is the interface for asynchronous streams: a sequence whose elements arrive over time and each one may require an await. Here is what it actually is, how await foreach and yield drive it, and the rule for when to reach for it over Task<List<T>>.
- What is Native AOT and what does it cost you?
Native AOT compiles your .NET app to a single self-contained native binary with no JIT, buying fast startup and a small memory footprint. The price is a C toolchain at build time, slower publishes, per-RID builds, no reflection or Reflection.Emit, mandatory trimming, and no Dynamic PGO. Here is the full ledger.
- Blazor static SSR gets [SupplyParameterFromSession] in .NET 11 Preview 5
Reading session state in static server-rendered Blazor meant reaching into HttpContext.Session and serializing by hand. .NET 11 Preview 5 adds [SupplyParameterFromSession] so a component property binds to a session key directly.
- Migrate from Swashbuckle to the built-in OpenAPI generator in .NET 11
A step-by-step migration from Swashbuckle.AspNetCore to Microsoft.AspNetCore.OpenApi in .NET 11: swapping AddSwaggerGen for AddOpenApi, converting operation, schema, and document filters to transformers, keeping a UI, and the Microsoft.OpenApi v2 breaking changes that bite.
- AsNoTracking vs AsNoTrackingWithIdentityResolution in EF Core 11: which should you use?
Use AsNoTracking for read-only queries by default. Reach for AsNoTrackingWithIdentityResolution only when the result graph contains the same entity more than once and your code depends on getting a single shared instance back.
- Minimal API validation vs FluentValidation in ASP.NET Core 11: which should you pick?
Compare ASP.NET Core built-in Minimal API validation with FluentValidation: asynchronous rules, endpoint filters, version differences and licensing.
- EF Core 11's New EF1004 Analyzer Catches a Silent Async Mistake
EF Core 11 Preview 5 ships the EF1004 analyzer. It flags ToAsyncEnumerable() on an IQueryable so you do not accidentally enumerate a database query synchronously inside an await foreach.
- HybridCache vs IMemoryCache vs IDistributedCache in .NET 11: which should you pick?
Default to HybridCache for new caching code in .NET 11. Reach for IMemoryCache only when you need raw single-server speed with no serialization, and IDistributedCache only as a backing store. Here is the decision matrix.
- X25519 Key Agreement Lands In-Box in .NET 11 Preview 5
.NET 11 Preview 5 adds a first-class X25519DiffieHellman type to System.Security.Cryptography, so you can do Curve25519 key exchange without BouncyCastle or NSec.
- Fix: The entity type 'X' requires a primary key to be defined in EF Core 11
EF Core can't find a key for your type. Either name a property Id or {Type}Id, add [Key], call HasKey, or - if it is a view or raw SQL result - call HasNoKey.
- LINQ Gets FullJoin and Selector-Free Joins in .NET 11 Preview 5
.NET 11 Preview 5 adds a brand-new FullJoin operator to LINQ plus tuple-returning overloads for Join, LeftJoin, RightJoin, and GroupJoin that drop the result selector entirely.
- Blazor static SSR forms get client-side validation in .NET 11 Preview 5
Static server-rendered Blazor forms could only validate after a full POST round-trip. .NET 11 Preview 5 renders validation metadata so the Blazor JS enforces DataAnnotations rules in the browser, no circuit required.
- Fix: The configured execution strategy 'SqlServerRetryingExecutionStrategy' does not support user-initiated transactions
EnableRetryOnFailure conflicts with BeginTransaction. Wrap the whole transaction in db.Database.CreateExecutionStrategy().ExecuteAsync(...) so it retries as one unit.
- System.Text.Json Finally Writes JSON Lines in .NET 11 Preview 5
.NET 11 Preview 5 adds JsonSerializer.SerializeAsyncEnumerable with topLevelValues: true, so System.Text.Json can now stream JSONL out, not just read it.
- Fix: its render mode is not supported by the parent component's render mode (Blazor)
You put @rendermode on a child whose parent is already interactive. A subtree has exactly one render mode. Remove the child directive or move it to the boundary.
- How to persist state across the Blazor static-to-interactive render boundary in .NET 11
A prerendered Blazor component runs its initialization twice and loses state at the interactive handoff. Fix it with the [PersistentState] attribute or the PersistentComponentState service in .NET 11.
- Anthropic SDK vs Microsoft.Extensions.AI for Calling Claude From .NET
Two ways to call Claude from C#: the official Anthropic .NET SDK directly, or the provider-neutral Microsoft.Extensions.AI IChatClient that wraps it. When each wins, what you lose at the abstraction boundary, and why it is not actually either/or. With claude-opus-4-8 and claude-sonnet-4-6 examples.
- How to expose OpenAPI without Swashbuckle in ASP.NET Core 11
Swashbuckle is gone from the ASP.NET Core templates. Here is how to generate and serve an OpenAPI document in .NET 11 with the built-in Microsoft.AspNetCore.OpenApi package: AddOpenApi, MapOpenApi, transformers, multiple documents, build-time generation, and a UI on top.
- How to organize Minimal API endpoints with MapGroup
Organize Minimal APIs into resource extension methods with MapGroup. Understand nested routes, shared metadata, filters, authentication and testing.
- How to validate request bodies in minimal APIs without controllers in ASP.NET Core 11
ASP.NET Core 11 has built-in validation for minimal APIs: call AddValidation, annotate your request record with DataAnnotations, and a source generator validates the bound model and returns 400 ProblemDetails before your handler runs. No controllers, no FluentValidation, no manual checks.
- .NET 11 Gives MemoryCache First-Class OpenTelemetry Metrics
.NET 11 Preview 4 ships a built-in meter for Microsoft.Extensions.Caching.Memory, so cache hit ratio and evictions flow into OpenTelemetry without a background poller.
- Migrate from IWebHostBuilder to WebApplication.CreateBuilder in .NET 11
A step-by-step migration from the old Startup.cs plus WebHostBuilder hosting model to the minimal hosting model with WebApplication.CreateBuilder, including the ASPDEPR008 deprecation, middleware ordering, IStartupFilter, and how to keep your tests working.
- Migrate from System.Web.HttpContext to Microsoft.AspNetCore.Http.HttpContext
A practical migration from the ASP.NET Framework System.Web.HttpContext to the ASP.NET Core 11 HttpContext: HttpContext.Current, the property map, Server.MapPath, Session, and the System.Web adapters shim for incremental migrations.
- Migrate from ValueTask<T> back to Task<T>: when and why (.NET 11, C# 14)
A practical checklist for reverting ValueTask and ValueTask<T> return types to Task and Task<T>, what breaks at the call sites, how to verify each change, and how to know whether the swap was ever worth it.
- Migrate a Blazor Server app to Blazor United (Blazor Web App) in .NET 11
A step-by-step checklist to move a standalone Blazor Server app to the unified Blazor Web App template on .NET 11, keeping every page on InteractiveServer with zero behaviour change.
- Migrate from in-process Azure Functions to the isolated worker model (.NET 8 / .NET 11)
A step-by-step checklist to move a .NET in-process Azure Functions app to the isolated worker model before the November 10, 2026 retirement, with csproj diffs, signature rewrites, and a slot-swap rollout.
- Migrate from Serilog to OpenTelemetry logging in .NET 11
A step-by-step guide to moving a .NET 11 app off Serilog and onto OpenTelemetry logging: the low-risk Serilog.Sinks.OpenTelemetry bridge, the full Microsoft.Extensions.Logging cut-over, what breaks, how to verify, and how to roll back.
- EF Core ExecuteUpdate vs loading entities and SaveChanges: which should you use?
A decision guide and real benchmark for EF Core 11: use ExecuteUpdate for set-based writes by a predicate, and the load-then-SaveChanges path only when you need the change tracker, interceptors, or a complex object graph.
- Migrate EF Core 6 to EF Core 11: breaking changes that actually bite
A version-pinned migration guide from EF Core 6.0 to EF Core 11.0, walking the breaking changes across EF7, 8, 9, 10, and 11 that break real apps: Encrypt=True, OPENJSON Contains, PendingModelChangesWarning, the native json column, and the SqlClient 7.0 split.
- BackgroundService vs IHostedService vs Hangfire for background jobs in .NET 11
Pick BackgroundService for in-process loops, raw IHostedService when you need fine lifecycle control, and Hangfire when jobs must survive a restart. A decision matrix with code and the one gotcha that picks for you.
- .NET 11 Raises the Minimum CPU Baseline to x86-64-v2
.NET 11 Preview 4 drops support for pre-2013 x86/x64 chips and bumps the JIT baseline to x86-64-v2. Here is what breaks, why, and how to check your hardware before you upgrade.
- Claude Code vs Cursor vs Aider for a .NET 11 Repo in 2026
For a large .NET 11 / C# 14 solution, Claude Code wins on agent quality and runs anywhere a terminal does. Cursor wins if your team wants a GUI and tab completion, as long as you can live without C# Dev Kit. Aider wins on cost and openness.
- .NET 11 Can Round-Trip a Double as Hex, Bit for Bit
.NET 11 Preview 4 teaches double, float, and Half to format with the X specifier and parse with NumberStyles.HexFloat, producing the same IEEE-754 hex text as C printf("%a").
- Fix: ObjectDisposedException: Cannot access a disposed context instance
Your fire-and-forget task captured a request-scoped DbContext that the DI scope already disposed. Resolve a fresh context inside the task with IServiceScopeFactory or IDbContextFactory.
- EF Core 11 Preview 4: Stop Retyping --project and --startup-project with .config/dotnet-ef.json
EF Core 11 Preview 4 lets the dotnet ef tool read default option values from a .config/dotnet-ef.json file, so split solutions no longer force you to pass --project and --startup-project on every command.
- How to use query splitting to avoid a cartesian explosion in EF Core 11
When you Include two sibling collections, EF Core 11 returns the cross product and your row count explodes. Here is how AsSplitQuery fixes it, how to turn it on globally, and the consistency and ordering gotchas to watch for.
2026 / 05
- How to run fire-and-forget work safely in ASP.NET Core with BackgroundService
Calling Task.Run from a controller loses work on shutdown, swallows exceptions, and captures disposed scoped services. The safe pattern is a bounded Channel queue drained by a BackgroundService that opens a fresh scope per work item and drains in-flight work on StopAsync.
- How to use ExecuteUpdate and ExecuteDelete for bulk writes in EF Core 11
A complete guide to ExecuteUpdate and ExecuteDelete in EF Core 11: the SQL they emit, the change-tracker gotcha that silently overwrites your bulk write, transactions, concurrency control with the affected-row count, and the EF Core 10 delegate setters that let you build conditional updates with plain if statements.
- How to use scoped services inside a BackgroundService in ASP.NET Core 11
A BackgroundService is a singleton, so it cannot inject a scoped service like a DbContext directly. Take IServiceScopeFactory, open one scope per unit of work with CreateAsyncScope, resolve inside it, and dispose it when the work is done.
- Migrate from AutoMapper to source-generated mapping with Mapperly
A step-by-step checklist to replace AutoMapper 15 Profiles, IMapper, ForMember, and ProjectTo with Riok.Mapperly 4.3 source-generated mappers in .NET 11.
- Migrate from MediatR to plain dependency injection in .NET 11
A step-by-step checklist to remove MediatR 12-14 and replace IRequest handlers, ISender, pipeline behaviors, and INotification with plain service classes and constructor injection.
- Migrate from Newtonsoft.Json 13 to System.Text.Json in a large .NET 11 codebase
A version-pinned playbook for swapping Newtonsoft.Json 13.0.4 for the in-box System.Text.Json on .NET 11: the attribute and settings mappings, the defaults that silently change your wire format, a staged rollout strategy, verification, and the gotchas that bite large codebases.
- Migrate from .NET 8 to .NET 11: the full checklist
Plan a .NET 8 migration using the current .NET 11 RC3 status, an exact SDK pin, verified compatibility guidance, deployment checks, and rollback.
- Migrate from .NET Framework 4.8 to .NET 11 in 2026
Plan a .NET Framework 4.8 migration with accurate support status, incremental ASP.NET boundaries, dependency checks, configuration, and rollback.
- Migrate from Xamarin.Forms 5.0 to .NET MAUI 11: the full checklist
End-to-end migration from Xamarin.Forms 5.0 to .NET MAUI 11 GA on net11.0, covering csproj rewrite, custom renderer to handler conversion, AppShell wiring, DependencyService removal, MessagingCenter retirement, Resizetizer assets, and the gotchas that bite a real production codebase.
- Azure Functions isolated worker vs in-process in .NET 11: which should you pick in 2026?
Pick the isolated worker model for every new Azure Functions app on .NET 11 in 2026, and migrate any remaining in-process apps before the November 10 retirement deadline.
- Blazor render modes in .NET 11: Server, WebAssembly, and Auto
Choose Blazor Web App render modes or standalone WebAssembly using hosting, offline, service, and support requirements, with corrected Auto behavior.
- EF Core 11 Preview 4: Temporal Table Period Columns Can Finally Be Real Properties
EF Core 11 Preview 4 drops the long-standing shadow-property restriction on SQL Server temporal tables. PeriodStart and PeriodEnd can now be regular CLR properties, configured with strongly-typed HasPeriodStart and HasPeriodEnd lambdas.
- StringBuilder vs string interpolation in .NET 11: which should you use?
Use string interpolation for one-shot composition of a fixed set of values; use StringBuilder when you append in a loop or across an unknown number of pieces. The dividing line is the loop, not the number of values.
- ASP.NET Core in .NET 11 Preview 4 Teaches OpenAPI About the HTTP QUERY Method
.NET 11 Preview 4 makes ASP.NET Core OpenAPI generation recognize HTTP QUERY as a first-class operation in OpenAPI 3.2, with a graceful fallback for 3.0 and 3.1 documents.
- Polly vs resilience handlers in .NET 11: which should you use?
Use the Microsoft.Extensions.Http.Resilience handler for HttpClient calls, since it is Polly with HTTP-aware defaults and telemetry in one line. Reach for Polly's ResiliencePipeline directly only when you protect something that is not an HttpClient.
- .NET 11 Adds Allocation-Free Deflate and GZip Compression
.NET 11 Preview 4 ships DeflateEncoder, GZipEncoder, and ZLibEncoder plus matching decoders so you can compress straight into a Span<byte> with OperationStatus, no Stream required.
- EF Core compiled queries vs raw SQL vs Dapper: which read path wins?
For read-heavy paths in .NET 11, plain EF Core with AsNoTracking is within ~5% of Dapper. Reach for compiled queries on a profiled single-row hot path, and Dapper only for the lowest latency or SQL LINQ can't express.
- HttpClient vs HttpClientFactory vs Refit: which should you use in .NET 11?
Never new up HttpClient per request. Use IHttpClientFactory to manage lifetime, and add Refit on top when you want a typed interface instead of hand-written request code. Raw singleton HttpClient is fine only for the simplest cases.
- MediatR vs plain service classes in 2026: should the license change move you?
Compare MediatR dispatch and pipeline behaviors with direct service calls, including DI validation, licensing criteria and how to assess performance.
- C# 16 Reworks unsafe Into a Caller Contract
C# 16 redesigns the unsafe keyword so it propagates a caller obligation instead of silently opening an unsafe context, with inner unsafe blocks now mandatory.
- Native AOT vs ReadyToRun vs JIT in .NET 11: which should you ship?
Plain JIT with Dynamic PGO wins steady-state throughput, ReadyToRun cuts startup with zero code changes, and Native AOT gives the smallest, fastest-starting binary at the cost of reflection and dynamic code. Pick by deployment shape, not raw benchmarks.
- System.Text.Json vs Newtonsoft.Json in 2026: which should you pick?
Pick System.Text.Json for new .NET 11 code: it ships in-box, is roughly 2x faster, and is the only one that works with Native AOT. Reach for Newtonsoft.Json only for JSONPath, TypeNameHandling, or genuinely lenient JSON.
- ConfigureAwait(false) vs default in .NET 11: does it still matter?
ConfigureAwait(false) is still mandatory in library code that may run under a SynchronizationContext (WinForms, WPF, MAUI). In application code on ASP.NET Core, a console app, or a worker service running on .NET 11, it is a no-op.
- IEnumerable vs IAsyncEnumerable vs IQueryable in C#: which one should the method return?
Three sequence interfaces, three execution models. Use IQueryable when a database can translate the query, IAsyncEnumerable when the producer is async and you want to stream, IEnumerable for everything else in memory.
- Minimal APIs vs controllers in ASP.NET Core 11: which should you pick in 2026?
Pick minimal APIs by default in ASP.NET Core 11. Use controllers only when you need MVC features that minimal APIs still do not match: convention-based routing across many actions, MVC-style filters, or Razor views.
- EF Core 11 vs Dapper for bulk inserts: real benchmark
For bulk inserts in .NET 11, neither EF Core nor Dapper wins. SqlBulkCopy does. This is the benchmark, the why, and the seat each tool deserves.
- dotnet new mcpserver Now Ships in the .NET 11 Preview 4 SDK
.NET 11 Preview 4 bundles the mcpserver project template directly into the SDK. No separate Microsoft.McpServer.ProjectTemplates install, no preview feed dance. Pick stdio or HTTP transport, opt into Native AOT, and dotnet new mcpserver -o MyServer is the whole setup.
- Fix: Provisioning profile doesn't include the currently selected device in MAUI iOS
The profile Visual Studio picked was generated before this iPhone's UDID was registered. Re-register the device, regenerate the development profile, redownload, redeploy.
- Fix: Unable to find a valid iOS Simulator runtime during MAUI build
Xcode 15+ ships without bundled iOS simulator runtimes. MAUI fails the build when SupportedOSPlatformVersion has no matching runtime installed. Install one with xcodebuild -downloadPlatform iOS or via Xcode Settings, then verify with xcrun simctl list runtimes.
- .NET 11 Adds Deadlock-Free Process Output Capture
.NET 11 Preview 4 ships new System.Diagnostics.Process APIs that drain stdout and stderr concurrently, plus one-line run-and-capture helpers and KillOnParentExit.
- Fix: Gradle build failed to produce an .apk file in MAUI Android
Nine out of ten times the real Gradle error is buried higher in the MSBuild log. JDK 17 path, missing maui-android workload, and Windows long paths are the usual root causes.
- Fix: A possible object cycle was detected
System.Text.Json refuses to serialize graphs with back-references. Set ReferenceHandler.IgnoreCycles, project to a DTO, or mark the back-pointer with [JsonIgnore]. Preserve is a last resort.
- Fix: SqlException: Timeout expired during EF Core migrations
Migrations use the design-time DbContext, not your runtime CommandTimeout. Set the timeout via UseSqlServer(o => o.CommandTimeout(...)), the connection string Command Timeout, or Database.SetCommandTimeout before Migrate().
- MAUI switches to CoreCLR by default on Android, iOS, and Mac Catalyst in .NET 11 Preview 4
.NET 11 Preview 4 makes CoreCLR the default runtime for MAUI on Android, iOS, Mac Catalyst, and tvOS. Mono is still one MSBuild property away. Here is what changes, what breaks, and how to opt out.
- dotnet watch finally reaches MAUI on Android and iOS in .NET 11 Preview 4
.NET 11 Preview 4 turns on dotnet watch for Android devices, Android emulators, and the iOS Simulator. Edit, save, and the running app updates without a manual rebuild. One csproj gotcha applies to iOS.
- Fix: System.Text.Json.JsonException: The JSON value could not be converted
System.Text.Json throws this when the incoming JSON token doesn't match the CLR target type. Match the JSON to the type, or register a JsonConverter or JsonSerializerOption that bridges them.
- Fix: System.Security.Cryptography.CryptographicException: Keyset does not exist
The certificate's private key lives in a separate Windows key file the current process identity cannot read. Grant ACL on the key, load the PFX with MachineKeySet, or use EphemeralKeySet.
- Fix: The command 'dotnet' could not be found on CI
Your CI runner cannot resolve dotnet because the SDK is not installed for that step, or it is installed but not on PATH. Use actions/setup-dotnet, pin a global.json, and export DOTNET_ROOT and ~/.dotnet/tools.
- Fix: System.IO.FileNotFoundException: Could not load file or assembly in a published app
Runs fine with dotnet run, throws after dotnet publish. The DLL is usually missing from the publish folder, not the runtime. Check deps.json, ProjectReference Private, and trimming.
- Fix: InvalidOperationException: Synchronous operations are disallowed
Replace the Stream.Read or Write call with ReadAsync/WriteAsync. As a last resort, set AllowSynchronousIO on Kestrel, IIS, or per-request via IHttpBodyControlFeature.
- Fix: RZ10012: Found markup element with unexpected name in Blazor
Blazor's Razor compiler emits RZ10012 when a PascalCase tag has no matching component type in scope. Add @using for the component's namespace in _Imports.razor, or @namespace in the component, then rebuild.
- Fix: dotnet ef migrations add fails with 'Unable to create an object of type DbContext'
EF Core's design-time tools could not instantiate your DbContext. Either expose a host via WebApplication.CreateBuilder, point to the right startup project, or implement IDesignTimeDbContextFactory.
- Fix: MSB3027 Could not copy X to Y. Exceeded retry count of 10. Failed
MSB3027 means MSBuild retried a file copy 10 times and a process still held the destination. Kill the locking process, exclude bin/obj from antivirus, or raise CopyRetryCount.
- Fix: The type or namespace name 'X' could not be found (after adding a project reference)
CS0246 right after a fresh ProjectReference is almost always a TargetFramework mismatch, a stale obj folder, or a missing using directive. Five fixes in order of likelihood.
- Fix: Cannot consume scoped service 'X' from singleton 'Y'
ASP.NET Core's scope validation throws this when a singleton would capture a scoped dependency for the rest of the process. Make the consumer scoped, or take IServiceScopeFactory and create a scope on demand.
- Fix: PlatformNotSupportedException: Operation is not supported on this platform in Native AOT
Native AOT strips the JIT and the interpreter, so reflection emit, expression-tree compilation, and unseen MakeGenericType throw at runtime. Find the call via IL3050 and replace it with a source generator or a pre-baked path.
- Fix: Unable to resolve service for type 'X' while attempting to activate 'Y'
ASP.NET Core throws this when a constructor asks for a type that was never registered, was registered on the wrong container, or was added after the host was built. Three concrete fixes cover almost every case.
- Fix: TaskCanceledException: A task was canceled in HttpClient
HttpClient throws TaskCanceledException for three different reasons: timeout, caller cancellation, or a connection-level abort. Tell them apart with InnerException and CancellationToken.IsCancellationRequested, then fix the right one.
- Fix: The JSON value could not be converted to System.DateTime
System.Text.Json only accepts ISO 8601 strings for DateTime. Send 2026-05-08T14:00:00Z or register a JsonConverter that parses your format. Empty strings and Unix timestamps both throw.
- Fix: The instance of entity type cannot be tracked because another instance with the same key value is already being tracked
EF Core 11 throws when two objects share a primary key inside one DbContext. Detach the old one or update it in place. AsNoTracking on the read prevents the collision.
- Fix: A second operation was started on this context instance before a previous operation completed
EF Core throws when two awaits run in parallel on the same DbContext. Await each call sequentially, or get a new DbContext per concurrent unit of work via IDbContextFactory.
- How to Run a Semantic Kernel Plugin From a BackgroundService
Wire a Microsoft.SemanticKernel 1.75.0 plugin into a hosted BackgroundService on .NET 11 and invoke its KernelFunctions on a PeriodicTimer schedule. Covers DI scopes, [KernelFunction] resolution, prompt-cache-friendly invocation, cancellation, and the lifetime gotchas that bite when you move a plugin off the request path.
- Fix: System.InvalidOperationException: No connection string named 'DefaultConnection' could be found
If GetConnectionString returns null in .NET 11, your appsettings.json is missing the key, not copied to the build output, or the wrong environment file is being selected. Three checks fix 95% of cases.
- How to package a .NET MAUI app for the Microsoft Store
End-to-end guide to packaging a .NET MAUI 11 Windows app as an MSIX, bundling x64/x86/ARM64 into a .msixupload, and submitting through Partner Center: identity reservation, Package.appxmanifest, dotnet publish flags, MakeAppx bundling, and the Store-trusted certificate handoff.
- How to Add Tool Calling to a Microsoft.Extensions.AI Chat Client
Wire AIFunctionFactory.Create, ChatOptions.Tools, and ChatClientBuilder.UseFunctionInvocation in Microsoft.Extensions.AI 10.5 so an IChatClient can call your .NET methods automatically. Covers OpenAI and Azure OpenAI providers, the FunctionInvokingChatClient knobs that actually matter (iteration limits, concurrent calls, approval prompts, error handling), and streaming responses with tools.
- How to implement drag-and-drop in .NET MAUI 11
End-to-end drag-and-drop in .NET MAUI 11: DragGestureRecognizer, DropGestureRecognizer, custom DataPackage payloads, AcceptedOperation, gesture position, and the per-platform PlatformArgs traps on Android, iOS, Mac Catalyst, and Windows.
- How to support dark mode correctly in a .NET MAUI app
End-to-end dark mode in .NET MAUI 11: AppThemeBinding, SetAppThemeColor, RequestedTheme, UserAppTheme override with persistence, the RequestedThemeChanged event, and the per-platform Info.plist and MainActivity bits that the docs gloss over.
- How to use Tailwind CSS with Blazor WebAssembly in .NET 11
A complete .NET 11 setup for Tailwind CSS v4 in a Blazor WebAssembly app: standalone CLI (no Node), MSBuild target, @source directives for Razor and CSS isolation files, and a publish pipeline that survives Native AOT.
- How to detect N+1 queries in EF Core 11
A practical guide to spotting N+1 queries in EF Core 11: what the pattern looks like in real code, how to surface it via logging, diagnostic interceptors, OpenTelemetry, and a test that fails the build when a hot path regresses.
- How to use compiled queries with EF Core for hot paths
A practical guide to EF Core 11 compiled queries: when EF.CompileAsyncQuery actually wins, the static-field pattern, the Include and tracking gotchas, and how to benchmark before and after so you can prove it was worth the extra ceremony.
- How to write a MAUI app that runs on Windows and macOS only (no mobile)
Strip Android and iOS from a .NET MAUI 11 project so it ships Windows and Mac Catalyst only: the csproj edits, the workload commands, and the multi-targeting that keeps your code clean.
- How to Migrate a Semantic Kernel Plugin to an MCP Server
Take an existing Semantic Kernel plugin with [KernelFunction] methods and turn it into a Model Context Protocol server other agents can call. Covers the drop-in WithTools(kernel) bridge, the native [McpServerTool] rewrite, parameter binding, dependency injection, and the gotchas that bite during the cutover.
- How to set up structured logging with Serilog and Seq in .NET 11
A complete guide to wiring Serilog 4.x and Seq 2025.2 into a .NET 11 ASP.NET Core app: AddSerilog vs UseSerilog, two-stage bootstrap logging, JSON configuration, enrichers, request logging, OpenTelemetry trace correlation, API keys, and the production gotchas around buffering, retention, and signal level.
- How to use OpenTelemetry with .NET 11 and a free backend
Wire OpenTelemetry traces, metrics, and logs into a .NET 11 ASP.NET Core app with the OTLP exporter, then ship them to a free, self-hosted backend: the standalone Aspire Dashboard for local dev, Jaeger and SigNoz for self-hosted production, and the OpenTelemetry Collector when you need both.
- How to write integration tests against a real SQL Server with Testcontainers
A complete guide to running ASP.NET Core integration tests against a real SQL Server 2022 using Testcontainers 4.11 and EF Core 11: WebApplicationFactory wiring, IAsyncLifetime, swapping the DbContext registration, applying migrations, parallelism, Ryuk cleanup, and CI gotchas.
- VSTest drops Newtonsoft.Json in .NET 11 Preview 4 and what breaks if you relied on it transitively
.NET 11 Preview 4 and Visual Studio 18.8 ship a VSTest that no longer flows Newtonsoft.Json into your test projects. Builds that quietly used the transitive copy will break with a single PackageReference fix.
2026 / 04
- How to add per-endpoint rate limiting in ASP.NET Core 11
A complete guide to per-endpoint rate limiting in ASP.NET Core 11: when to pick fixed window vs sliding window vs token bucket vs concurrency, how RequireRateLimiting and [EnableRateLimiting] differ, partitioning by user or IP, the OnRejected handler, and the distributed deployment pitfall everyone hits.
- How to Call the Claude API from a .NET 11 Minimal API with Streaming
Stream Claude responses from an ASP.NET Core 11 minimal API end-to-end: the official Anthropic .NET SDK, TypedResults.ServerSentEvents, SseItem, IAsyncEnumerable, cancellation flow, and the gotchas that buffer your tokens silently. With Claude Sonnet 4.6 and Opus 4.7 examples.
- How to use System.Threading.Lock in .NET
Use System.Threading.Lock for synchronous critical sections on .NET 9 and later. Understand compiler lowering, async restrictions and Monitor compatibility.
- How to write a source generator for INotifyPropertyChanged
A complete guide to building your own incremental source generator for INotifyPropertyChanged in C# 14 and .NET 11: the IIncrementalGenerator pipeline, marker attributes, partial-class output, the SetProperty pattern, and how to stay AOT-friendly.
- How to detect when a file finishes being written to in .NET
FileSystemWatcher fires Changed before the writer is done. Three reliable patterns for .NET 11 to know a file is fully written: open with FileShare.None, debounce with size stabilization, and the producer-side rename trick that avoids the problem entirely.
- How to share validation logic between server and Blazor WebAssembly
The single biggest source of validation drift in a Blazor WebAssembly + ASP.NET Core app is the urge to write the rules twice. This guide walks the only layout that scales in .NET 11: a Shared class library that owns the DTOs and their validators, consumed by both the WASM client (EditForm + DataAnnotationsValidator or Blazored.FluentValidation) and the server (minimal API endpoint filter or MVC model binding), with a tested round-trip that maps server-side ValidationProblemDetails back into the EditContext.
- How to use SearchValues<T> correctly in .NET 11
SearchValues<T> beats IndexOfAny by 5x to 250x but only when you use it the way the runtime expects. The cache-as-static rule, the StringComparison gotcha, when not to bother, and the IndexOfAnyExcept inversion trick that nobody documents.
- How to add OpenAPI authentication flows to Swagger UI in .NET 11
In .NET 11 the OpenAPI document is generated by Microsoft.AspNetCore.OpenApi and Swagger UI is no longer in the template. Here is how to wire Bearer, OAuth2 with PKCE, and OpenID Connect so the Authorize button actually works.
- How to implement refresh tokens in ASP.NET Core Identity
Two working paths in .NET 11: the built-in MapIdentityApi /refresh endpoint, and a custom JWT setup with refresh token rotation, family tracking, and reuse detection.
- How to upload a large file with streaming to Azure Blob Storage
Upload multi-GB files to Azure Blob Storage from .NET 11 without loading them into memory. BlockBlobClient.UploadAsync with StorageTransferOptions, MultipartReader for ASP.NET Core uploads, and the buffering traps that put your payload on the LOH.
- How to reduce cold-start time for a .NET 11 AWS Lambda
A practical, version-specific playbook for cutting .NET 11 Lambda cold starts. Covers Native AOT on provided.al2023, ReadyToRun, SnapStart on the managed dotnet10 runtime, memory tuning, static reuse, trim safety, and how to actually read INIT_DURATION.
- How to use Native AOT with ASP.NET Core minimal APIs
Configure a Minimal API for Native AOT with generated JSON metadata. Understand builder choices, deployment toolchains, warnings and feature limitations.
- How to warm up EF Core's model before the first query
EF Core builds its conceptual model lazily on the first DbContext access, which is why the first query in a fresh process is several hundred milliseconds slower than every query after it. This guide covers the three real fixes in EF Core 11: a startup IHostedService that touches Model and opens a connection, dotnet ef dbcontext optimize to ship a precompiled model, and the cache-key footguns that silently rebuild the model anyway.
- How to add a global exception filter in ASP.NET Core 11
A complete guide to global exception handling in ASP.NET Core 11: why IExceptionFilter is the wrong tool, how IExceptionHandler and UseExceptionHandler work together, ProblemDetails responses, multi-handler chains, and the .NET 10 diagnostics suppression breaking change.
- How to Build a Custom MCP Server in C# on .NET 11
Build a working Model Context Protocol server in C# 14 / .NET 11 using the official ModelContextProtocol 1.2 SDK. Covers stdio transport, [McpServerTool] attributes, dependency injection, the stderr logging trap, and registration with Claude Code, Claude Desktop, and VS Code.
- How to mock DbContext without breaking change tracking
Mocking DbContext directly silently breaks ChangeTracker, which is why Microsoft discourages it. This guide shows the two patterns that actually work in EF Core 11: SQLite in-memory with a kept-open connection so the real ChangeTracker runs, and the repository pattern that lifts EF Core out of the test entirely.
- How to unit-test code that uses HttpClient
A complete guide to testing HttpClient in .NET 11: why you should not mock HttpClient directly, how to write a stub HttpMessageHandler, swapping the primary handler with IHttpClientFactory, verifying Polly retries, and the WireMock.Net option.
- How to profile a .NET app with dotnet-trace and read the output
A complete guide to profiling .NET 11 apps with dotnet-trace: install, pick the right profile, capture from startup, and read the .nettrace output in PerfView, Visual Studio, Speedscope, or Perfetto.
- How to use Channels instead of BlockingCollection in C#
System.Threading.Channels is the async-first replacement for BlockingCollection in .NET 11. This guide shows how to migrate, how to choose bounded vs unbounded, and how to handle backpressure, cancellation, and graceful shutdown without deadlocking.
- How to write a custom JsonConverter in System.Text.Json
A complete guide to writing custom JsonConverter<T> for System.Text.Json in .NET 11: when you actually need one, how to navigate Utf8JsonReader correctly, how to handle generics with JsonConverterFactory, and how to stay AOT-friendly.
- How to Generate Strongly Typed Client Code from an OpenAPI Spec in .NET 11
Use Kiota, Microsoft's official OpenAPI code generator, to produce a fluent, strongly typed C# client from any OpenAPI spec. Step-by-step: install, generate, wire into ASP.NET Core DI, and handle authentication.
- How to read a large CSV in .NET 11 without running out of memory
Stream a multi-gigabyte CSV in .NET 11 without OutOfMemoryException. File.ReadLines, CsvHelper, Sylvan, and Pipelines compared with code and measurements.
- How to stream a file from an ASP.NET Core endpoint without buffering
Serve large files from ASP.NET Core 11 without loading them into memory. Three tiers: PhysicalFileResult for on-disk files, Results.Stream for arbitrary streams, and Response.BodyWriter for generated payloads -- with code for each.
- EF Core 11 Preview 3 Adds RemoveDbContext for Clean Test Provider Swaps
EF Core 11 Preview 3 introduces RemoveDbContext, RemoveExtension, and a parameterless AddPooledDbContextFactory overload, removing the boilerplate around swapping providers in tests and centralizing pooled factory configuration.
- How to cancel a long-running Task in C# without deadlocking
Cooperative cancellation with CancellationToken, CancelAsync, Task.WaitAsync, and linked tokens in .NET 11. Plus the blocking patterns that turn a clean cancel into a deadlock.
- How to use IAsyncEnumerable<T> with EF Core 11
EF Core 11 queries implement IAsyncEnumerable<T> directly. Here is how to stream rows with await foreach, when to prefer it over ToListAsync, and the gotchas around connections, tracking, and cancellation.
- How to use records with EF Core 11 correctly
A practical guide to mixing C# records and EF Core 11. Where records fit, where they break change tracking, and how to model value objects, entities, and projections without fighting the framework.
- Kestrel starts processing HTTP/3 requests before the SETTINGS frame in .NET 11 Preview 3
.NET 11 Preview 3 lets Kestrel serve HTTP/3 requests before the peer's control stream and SETTINGS frame arrive, shaving handshake latency off the first request on every new QUIC connection.
- EF Core 11 translates Contains to JSON_CONTAINS on SQL Server 2025
EF Core 11 auto-translates LINQ Contains over JSON collections to the new SQL Server 2025 JSON_CONTAINS function, and adds EF.Functions.JsonContains for path-scoped and mode-specific queries that can hit a JSON index.
- How to return multiple values from a method in C# 14
Seven ways to return more than one value from a C# 14 method: named tuples, out parameters, records, structs, deconstruction, and the extension-member trick for types you don't own. Real benchmarks and a decision matrix at the end.
- RyuJIT trims more bounds checks in .NET 11 Preview 3: index-from-end and i + constant
.NET 11 Preview 3 teaches RyuJIT to eliminate redundant bounds checks on consecutive index-from-end access and on i + constant < length patterns, cutting branch pressure in tight loops.
- RegexOptions.AnyNewLine lands in .NET 11 Preview 3: Unicode-aware anchors without the \r? hacks
.NET 11 Preview 3 adds RegexOptions.AnyNewLine so ^, $, \Z, and . recognize every Unicode newline sequence, including \r\n, NEL, LS, and PS, with \r\n treated as one atomic break.
- Aspire 13.2 --isolated: Run Parallel AppHost Instances Without Port Collisions
Aspire 13.2 ships an --isolated flag that gives each aspire run its own random ports and secrets store. It unblocks multi-checkout work, agent worktrees, and integration tests that need a live AppHost.
- .NET 11 Preview 3: dotnet run -e sets environment variables without launch profiles
dotnet run -e in .NET 11 Preview 3 passes environment variables straight from the CLI and surfaces them as MSBuild RuntimeEnvironmentVariable items.
- dotnet sln finally edits solution filters from the CLI in .NET 11 Preview 3
.NET 11 Preview 3 teaches dotnet sln to create, add, remove, and list projects in .slnf solution filters, so large mono-repos can load a subset without opening Visual Studio.
- dotnet watch in .NET 11 Preview 3: Aspire hosts, crash recovery, and saner Ctrl+C
dotnet watch gains Aspire app host integration, automatic relaunch after crashes, and fixed Ctrl+C handling for Windows desktop apps in .NET 11 Preview 3.
- EF Core 11 Prunes Unnecessary Reference Joins in Split Queries
EF Core 11 Preview 3 removes redundant to-one joins from split queries and drops unneeded ORDER BY keys. One reported scenario got 29% faster, another 22%. Here is what the SQL now looks like.
- System.Text.Json in .NET 11 Preview 3 adds PascalCase and per-member naming policies
.NET 11 Preview 3 finishes the naming-policy story in System.Text.Json: JsonNamingPolicy.PascalCase, a member-level [JsonNamingPolicy] attribute, and a type-level [JsonIgnore] default for cleaner DTOs.
- Blazor Virtualize Finally Handles Variable-Height Items in .NET 11
ASP.NET Core in .NET 11 Preview 3 teaches the Virtualize component to measure items at runtime, fixing the spacing and scroll jitter that uniform-height assumptions caused.
- Pin Clustering Lands in .NET MAUI 11 Maps
.NET MAUI 11 Preview 3 adds built-in pin clustering to the Map control on Android and iOS, with ClusteringIdentifier groups and a ClusterClicked event.
- EF Core 11 Adds GetEntriesForState to Skip DetectChanges
EF Core 11 Preview 3 introduces ChangeTracker.GetEntriesForState, a state-filtered enumerator that avoids an extra DetectChanges pass in hot paths like SaveChanges interceptors and audit hooks.
- .NET MAUI 11 Ships a Built-in LongPressGestureRecognizer
.NET MAUI 11 Preview 3 adds LongPressGestureRecognizer as a first-party gesture, with duration, movement threshold, state events, and command binding, replacing the common Community Toolkit behavior.
- EF Core 11 turns on Cosmos DB transactional batches by default
EF Core 11 groups Cosmos DB writes into transactional batches per container and partition on every SaveChanges, giving best-effort atomicity and fewer roundtrips without any code changes.
- Blazor SSR Finally Gets TempData in .NET 11
ASP.NET Core in .NET 11 Preview 2 brings TempData to Blazor static server-side rendering, enabling flash messages and Post-Redirect-Get flows without workarounds.
- C# 15 Collection Expression Arguments: Pass Constructors Inline with with(...)
C# 15 adds the with(...) element to collection expressions, letting you pass capacity, comparers, and other constructor arguments directly in the initializer.
- .NET 11 Adds Native Zstandard Compression to System.IO.Compression
.NET 11 Preview 1 ships ZstandardStream, ZstandardEncoder, and ZstandardDecoder in System.IO.Compression, giving you fast, inbox zstd support with no third-party packages.
- EF Core 11 Lets You Create and Apply a Migration in One Command
The dotnet ef database update command now accepts --add to scaffold and apply a migration in a single step. Here is how it works, why it matters for containers and .NET Aspire, and what to watch for.
- EF Core 11 Adds Native SQL Server Vector Search with DiskANN Indexes
EF Core 11 Preview 2 supports SQL Server 2025 VECTOR_SEARCH() and DiskANN vector indexes directly from LINQ. Here is how to set up the index, run approximate queries, and what changes from the EF Core 10 VectorDistance approach.
- ASP.NET Core 11 Ships Native OpenTelemetry Tracing: Drop the Extra NuGet Package
ASP.NET Core in .NET 11 Preview 2 adds OpenTelemetry semantic attributes directly to HTTP server activity, removing the need for OpenTelemetry.Instrumentation.AspNetCore.
- C# 15 Union Types Are Here: Type Unions Ship in .NET 11 Preview 2
C# 15 introduces the union keyword for type unions with exhaustive pattern matching and implicit conversions. Available now in .NET 11 Preview 2.
- Kestrel Drops Exceptions from Its HTTP/1.1 Parser in .NET 11
Kestrel's HTTP/1.1 request parser in .NET 11 replaces BadHttpRequestException with a result struct, cutting malformed-request overhead by up to 40%.
- .NET 11 Runtime Async Replaces State Machines with Cleaner Stack Traces
Runtime Async in .NET 11 moves async/await handling from compiler-generated state machines into the runtime itself, producing readable stack traces, correct breakpoints, and fewer heap allocations.
- dotnet new webworker: first-class Web Workers for Blazor in .NET 11 Preview 2
A new project template in .NET 11 Preview 2 scaffolds the JS plumbing, WebWorkerClient, and JSExport boilerplate needed to run .NET code in a browser Web Worker.