Skip to content

Target .NET 10 and 11; remove .NET 8 and 9 - #4922

Merged
rockfordlhotka merged 3 commits into
mainfrom
4699-net11-remove-net8-net9
Sep 13, 2026
Merged

rockfordlhotka merged 3 commits into
mainfrom
4699-net11-remove-net8-net9

Conversation

@rockfordlhotka

@rockfordlhotka rockfordlhotka commented Sep 13, 2026 •

Copy link
Copy Markdown
Member

Closes #4699
Closes #4348
Closes #4581

CSLA 11 now targets .NET 10 and .NET 11. .NET 8 and .NET 9 support is removed. Both reach end of support in November 2026. netstandard2.0/2.1 and .NET Framework 4.6.2–4.8 targets are unchanged.

Changes

  • TFMs: net8.0/net9.0 replaced by net11.0 in Csla, Csla.AspNetCore, Csla.Blazor, Csla.Blazor.WebAssembly, Csla.Testing, the Grpc/RabbitMq/WCF channels, Csla.Windows, Csla.Xaml.Wpf, Csla.Xaml.Maui (net11.0-android/ios/maccatalyst/windows), and Csla.Benchmarks.
  • Packages: the net11.0 targets reference .NET 11 RC1 packages (11.0.0-rc.1.26425.128, MAUI 11.0.0-rc.1.26451.6). These need bumping to GA in November.
    • WCF: there is no 11.x System.ServiceModel.* release, so net11.0 uses the 10.x packages.
    • MAUI: Microsoft.Maui.Controls.Compatibility has no .NET 11 RC build and CSLA doesn't use it, so it's omitted for net11.
    • MAUI: .NET 11 for Android requires API level 24, so net11.0-android sets SupportedOSPlatformVersion to 24.0. net10.0-android stays at 21.0.
  • Tests: the test projects in csla.test.sln now target both net10.0 and net11.0 (GraphMerger also keeps net462), so both shipped .NET builds are tested. The Microsoft.Extensions.*, TestHost and similar packages take their version from a DotNetPackageVersion property in Source/tests/Directory.Build.props, which picks 10.0.0 or 11.0.0-rc.1 to match each target framework.
  • SDK/CI: Source/global.json pins the .NET 11 RC1 SDK (prerelease allowed). The CI and release workflows install it along with .NET 10. The MAUI CI job moves to macos-26 with Xcode 26.5, which the .NET 11 iOS workload requires.
  • Other: benchmarks drop the Net80/Net90 jobs; the orphaned CslaGenerator.Tests project (not in any solution) moves from net9.0 to net10.0. The release notes list the breaking change, and CLAUDE.md is updated.

#if NET8_0_OR_GREATER / NET9_0_OR_GREATER guards are left alone. They still hold for net10/net11.

Not in this PR

  • Samples and Support/Templates still reference published CSLA packages and net8/net9 framework choices.

Verification

  • dotnet build Source/csla.test.sln with SDK 11.0.100-rc.1: 0 errors. The trimming warnings are the same on net10.0 and net11.0.
  • dotnet test Source/csla.test.sln (CI filter/settings): all passed on net10.0 and net11.0 in repeated runs. One run had a single intermittent failure in csla.netcore.test (net11.0) that didn't reproduce in six further runs. BusyStatusTests.WaitForIdle_WhenBusyWillWaitUntilNotBusyAnymore also fails intermittently on main.
  • Source/csla.benchmarks.sln builds.
  • MAUI was not built locally; CI will run that job because this PR modifies Csla.Xaml.Maui.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Dn4aKN7kqcG78x1HBWApk3

- Replace net8.0/net9.0 with net11.0 across framework, channel, UI,
  MAUI, testing, and benchmark projects (net10.0 retained)
- Reference .NET 11 RC1 packages for the net11.0 targets; WCF uses the
  10.x System.ServiceModel packages since there is no 11.x release, and
  MAUI drops Microsoft.Maui.Controls.Compatibility for net11 (unused)
- Pin the .NET 11 RC1 SDK in global.json and install it plus .NET 10
  in CI and release workflows; move the MAUI CI job to macos-26/Xcode 26.5
- Update release notes and CLAUDE.md

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dn4aKN7kqcG78x1HBWApk3
@rockfordlhotka
rockfordlhotka requested a review from a team as a code owner September 13, 2026 20:57
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dn4aKN7kqcG78x1HBWApk3
@rockfordlhotka rockfordlhotka changed the title #4699 #4348 #4581 Target .NET 10 and 11; remove .NET 8 and 9 Target .NET 10 and 11; remove .NET 8 and 9 Sep 13, 2026
Multi-target the test projects in csla.test.sln so the net11.0 framework
builds are exercised. Runtime-aligned package versions (Microsoft.Extensions.*,
TestHost, etc.) come from a DotNetPackageVersion property in
Source/tests/Directory.Build.props that matches each target framework.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dn4aKN7kqcG78x1HBWApk3
@rockfordlhotka
rockfordlhotka merged commit de8e9b6 into main Sep 13, 2026
3 checks passed
@rockfordlhotka
rockfordlhotka deleted the 4699-net11-remove-net8-net9 branch September 13, 2026 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for .NET 11 Remove support for .NET 9 Remove support for .NET 8

1 participant