You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: catalog/Platform/Official-DotNet-Experimental/skills/exp-test-maintainability/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ Analyze .NET test code for maintainability issues: duplicated boilerplate, copy-
36
36
37
37
### Step 1: Gather the test code
38
38
39
-
Read all test files the user provides or references. If the user points to a directory or project, scan for all test files — see the `exp-dotnet-test-frameworks` skill for framework-specific markers.
39
+
Read all test files the user provides or references. If the user points to a directory or project, scan for all test files — see the `dotnet-test-frameworks` skill for framework-specific markers.
Copy file name to clipboardExpand all lines: catalog/Platform/Official-DotNet-Upgrade/skills/migrate-dotnet10-to-dotnet11/SKILL.md
+46-12Lines changed: 46 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,15 +11,15 @@ description: >
11
11
Dockerfiles for .NET 11.
12
12
DO NOT USE FOR: .NET Framework migrations, upgrading from .NET 9 or earlier,
13
13
greenfield .NET 11 projects, or cosmetic modernization unrelated to the upgrade.
14
-
NOTE: .NET 11 is in preview. Covers breaking changes through Preview 1.
14
+
NOTE: .NET 11 is in preview. Covers breaking changes through Preview 3.
15
15
license: MIT
16
16
---
17
17
18
18
# .NET 10 → .NET 11 Migration
19
19
20
20
Migrate a .NET 10 project or solution to .NET 11, systematically resolving all breaking changes. The outcome is a project targeting `net11.0` that builds cleanly, passes tests, and accounts for every behavioral, source-incompatible, and binary-incompatible change introduced in .NET 11.
21
21
22
-
> **Note:** .NET 11 is currently in preview. This skill covers breaking changes documented through Preview 1. It will be updated as additional previews ship.
22
+
> **Note:** .NET 11 is currently in preview. This skill covers breaking changes documented through Preview 3.
23
23
24
24
## When to Use
25
25
@@ -59,10 +59,14 @@ Migrate a .NET 10 project or solution to .NET 11, systematically resolving all b
59
59
-**SDK attribute**: `Microsoft.NET.Sdk.Web` → ASP.NET Core; `Microsoft.NET.Sdk.WindowsDesktop` with `<UseWPF>` or `<UseWindowsForms>` → WPF/WinForms
60
60
-**PackageReferences**: `Microsoft.EntityFrameworkCore.*` → EF Core; `Microsoft.EntityFrameworkCore.Cosmos` → Cosmos DB provider
-**Cryptography API usage** → DSA on macOS affected
62
+
-**Cryptography API usage** → DSA on macOS affected; AIA cert download changes relevant
63
63
-**Compression API usage** → DeflateStream/GZipStream/ZipArchive changes relevant
64
-
-**TAR API usage** → Header checksum validation change relevant
64
+
-**TAR API usage** → Header checksum validation and HardLink entry changes relevant
65
65
-**`NamedPipeClientStream` usage with `SafePipeHandle`** → SYSLIB0063 constructor obsoletion relevant
66
+
-**`BackgroundService` usage** → Unhandled exceptions now stop the host
67
+
-**`Microsoft.OpenApi` direct usage** → v3 API breaking changes in ASP.NET Core OpenAPI
68
+
-**EF Core SQL Server with Entra ID auth** → SqlClient 7.0 auth dependency changes
69
+
-**NativeAOT native libraries on Unix** → Output filename prefix changed
66
70
4. Record which reference documents are relevant (see the reference loading table in Step 3).
67
71
5. Do a **clean build** (`dotnet build --no-incremental` or delete `bin`/`obj`) on the current `net10.0` target to establish a clean baseline. Record any pre-existing warnings.
68
72
@@ -93,9 +97,10 @@ Load reference documents based on the project's technology areas:
|`references/cryptography-dotnet10to11.md`| Project uses cryptography APIs, mTLS, or targets macOS |
103
+
|`references/runtime-jit-dotnet10to11.md`| Deploying to older hardware, embedded devices, or using NativeAOT |
99
104
100
105
Work through each build error systematically. Common patterns:
101
106
@@ -115,6 +120,12 @@ Work through each build error systematically. Common patterns:
115
120
116
121
8.**`when` switch-expression-arm parsing** — `(X.Y) when` is now parsed as a constant pattern with a `when` clause instead of a cast expression, which can cause existing code to fail to compile or change meaning. Review switch expressions using `when` and adjust syntax as needed.
117
122
123
+
9.**Microsoft.OpenApi v3 breaking changes** — `Microsoft.AspNetCore.OpenApi` now depends on `Microsoft.OpenApi` 3.x. Code using `Microsoft.OpenApi` types directly (`OpenApiDocument`, `OpenApiSchema`, etc.) will have compile errors. Follow the v3 upgrade guide.
124
+
125
+
10.**EF Core Design package no longer transitive** — `Microsoft.EntityFrameworkCore.Tools` and `.Tasks` no longer depend on `.Design`. Add an explicit `PackageReference` if needed.
126
+
127
+
11.**EFOptimizeContext MSBuild property removed** — Replace with `<EFScaffoldModelStage>` and `<EFPrecompileQueriesStage>`.
128
+
118
129
### Step 4: Address behavioral changes
119
130
120
131
These changes compile successfully but alter runtime behavior. Review each one and determine impact:
@@ -137,6 +148,24 @@ These changes compile successfully but alter runtime behavior. Review each one a
137
148
138
149
9.**Mono launch target for .NET Framework** — No longer set automatically. If using Mono for .NET Framework apps on Linux, specify explicitly.
139
150
151
+
10.**Unhandled BackgroundService exceptions stop the host** — Exceptions from `ExecuteAsync()` now propagate and crash the host. Add try/catch in background services that should not bring down the application.
152
+
153
+
11.**ZipArchive CRC32 validation** — ZIP reads now validate CRC32 checksums. Corrupt or truncated archives that previously succeeded will now throw `InvalidDataException`.
154
+
155
+
12.**TarWriter emits HardLink entries** — Hard-linked files are now written as `HardLink` entries instead of duplicated data. Consumers of .NET-produced tar archives must handle `HardLink` entries.
156
+
157
+
13.**AIA certificate downloads disabled** — Server-side client-certificate validation no longer downloads intermediate CAs via AIA by default. Pre-install the full chain or have clients send intermediates.
158
+
159
+
14.**Blazor Virtualize OverscanCount default changed** — Default `OverscanCount` changed from 3 to 15. Set explicitly if performance-sensitive.
160
+
161
+
15.**Microsoft.Data.SqlClient 7.0 — Entra ID auth separated** — Azure/Entra ID authentication dependencies removed from the core SqlClient package. Add `Microsoft.Data.SqlClient.Extensions.Azure` if using Entra ID auth.
162
+
163
+
16.**SqlVector<T> excluded from SELECT** — Vector properties are no longer auto-loaded. Use explicit projections to include vector values.
164
+
165
+
17.**SQLitePCLRaw encryption bundles removed** — `bundle_e_sqlcipher` and other encryption bundle packages removed in SQLitePCLRaw 3.0.
166
+
167
+
18.**NativeAOT Unix native library `lib` prefix** — Output filenames now include `lib` prefix on Linux/macOS (e.g., `libMyLib.so`).
168
+
140
169
### Step 5: Update infrastructure
141
170
142
171
1.**Dockerfiles**: Update base images from 10.0 to 11.0:
@@ -155,7 +184,7 @@ These changes compile successfully but alter runtime behavior. Review each one a
155
184
"sdk": {
156
185
- "version": "10.0.100",
157
186
- "rollForward": "latestFeature"
158
-
+ "version": "11.0.100-preview.1",
187
+
+ "version": "11.0.100-preview.3",
159
188
+ "rollForward": "latestFeature"
160
189
},
161
190
"otherSettings": {
@@ -173,11 +202,15 @@ These changes compile successfully but alter runtime behavior. Review each one a
173
202
3. If the application is containerized, build and test the container image
174
203
4. Smoke-test the application, paying special attention to:
175
204
- Compression behavior with empty streams
176
-
- TAR file reading
205
+
- TAR file reading (checksum validation and HardLink entries)
177
206
- EF Core Cosmos DB operations (must be async)
178
207
- DSA usage on macOS
179
208
- Memory-intensive MemoryStream usage
180
209
- Span collection expression assignments
210
+
- BackgroundService exception handling
211
+
- mTLS / client certificate chain validation
212
+
- EF Core SQL Server with Entra ID authentication
213
+
- NativeAOT output filenames on Unix
181
214
5. Review the diff and ensure no unintended behavioral changes were introduced
182
215
183
216
## Reference Documents
@@ -189,6 +222,7 @@ The `references/` folder contains detailed breaking change information organized
0 commit comments