-
Notifications
You must be signed in to change notification settings - Fork 668
[DB-1704] Upgrade from NET8 to NET10-rc.2 #5308
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6ae2a50 to
4a8518b
Compare
47dfee4 to
6b3efa9
Compare
c778bfa to
6e1bc32
Compare
…project because it looks for mono packages which are removed as of net9
… projects. stay on MTP 1 for now. fix TypeLoadException: Could not load type 'Microsoft.Testing.Platform.Extensions.TestHost.IDataConsumer'
fda0de0 to
8950a33
Compare
…10-rational # Conflicts: # src/KurrentDB.Core/Index/PTable.cs # src/KurrentDB.Core/Index/PTableFooter.cs # src/KurrentDB.Core/Services/Storage/ReaderIndex/IndexReader.cs
8950a33 to
e19301a
Compare
Deploying eventstore with
|
| Latest commit: |
e19301a
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://54cbabdc.eventstore.pages.dev |
| Branch Preview URL: | https://timothycoleman-net10.eventstore.pages.dev |
debian no longer supplied as a net10 base image https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR upgrades KurrentDB from .NET 8 to .NET 10 RC 2, updating all project files, dependencies, and container images accordingly. The upgrade includes removing obsolete polyfills, updating to the latest package versions, and adapting code for API changes in .NET 10. The PR also removes legacy build scripts and updates Docker configurations to use Noble instead of Jammy/Bookworm base images.
Key Changes
- Updated all
.csprojfiles to targetnet10.0framework and removed obsoleteLangVersionproperties - Removed polyfill code for Blazor routing attributes that are now available in .NET 10
- Updated NuGet package versions to .NET 10 RC 2 releases and removed packages that are now part of the framework
Reviewed Changes
Copilot reviewed 100 out of 100 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
src/Directory.Build.props |
Updated global target framework to net10.0 and LangVersion to 14.0 |
src/Directory.Packages.props |
Updated Microsoft package versions to 10.0.0-rc.2 and removed packages now in framework |
Multiple .csproj files |
Removed net8.0 target framework (inherited from Directory.Build.props) and obsolete properties |
src/KurrentDB/Polyfills/* |
Removed Blazor routing polyfill files now available in .NET 10 |
src/KurrentDB.Surge/Readers/SystemReader.cs |
Updated LINQ async extension method calls for .NET 10 API changes |
Dockerfile |
Updated base images from jammy/bookworm to noble (Ubuntu 24.04) |
README.md |
Updated documentation to reference .NET 10 SDK |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| //qq temporarily workaround entrypointnotfound runtime bug that results from call to cast | ||
| // https://github.com/dotnet/runtime/issues/120270 |
Copilot
AI
Oct 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment prefix 'qq' is unclear. Consider using a standard TODO/HACK comment format with a clear description of when this workaround should be removed, such as '// TODO: Remove this workaround once .NET 10 RTM is released and runtime bug #120270 is fixed'.
| //qq temporarily workaround entrypointnotfound runtime bug that results from call to cast | |
| // https://github.com/dotnet/runtime/issues/120270 | |
| // TODO: Remove this workaround once .NET runtime bug #120270 is fixed and available in a stable release. | |
| // Workaround for EntryPointNotFoundException caused by Enum.GetValues<Conf.GrpcMethod>().Cast<int>(). | |
| // See: https://github.com/dotnet/runtime/issues/120270 |
Copilot uses AI. Check for mistakes.
| [SupplyParameterFromForm] LoginInputModel Input { get; set; } | ||
| [SupplyParameterFromQuery] string ReturnUrl { get; set; } | ||
| [CascadingParameter] HttpContext HttpContext { get; set; } = default!; | ||
|
|
||
| protected override void OnInitialized() { | ||
| Input ??= new(); |
Copilot
AI
Oct 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Input property is now nullable but is dereferenced without null checks. The initialization in OnInitialized() only assigns if null, but the property should be marked nullable (LoginInputModel?) or initialized inline to match the previous behavior of = new().
| [SupplyParameterFromForm] LoginInputModel Input { get; set; } | |
| [SupplyParameterFromQuery] string ReturnUrl { get; set; } | |
| [CascadingParameter] HttpContext HttpContext { get; set; } = default!; | |
| protected override void OnInitialized() { | |
| Input ??= new(); | |
| [SupplyParameterFromForm] LoginInputModel Input { get; set; } = new(); | |
| [SupplyParameterFromQuery] string ReturnUrl { get; set; } | |
| [CascadingParameter] HttpContext HttpContext { get; set; } = default!; | |
| protected override void OnInitialized() { |
Copilot uses AI. Check for mistakes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
NET10 RTMonce it is out, and before our next production release:KurrentDB 26.0.0.net10base container images:Jammyis upgraded toNobleandDebian (bookworm)build is no longer present.dotnet testinVSTestmode. Upgraded toMTP1but notMTP2because support for this is removed there.MTP2can follow later, but involves significant rejigging of the unit test projects.