-
-
Notifications
You must be signed in to change notification settings - Fork 28
breaking: Add .NET 10 Support and Upgrade to ReactiveUI 22.0 #834
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
- Unshallowed git repository - Installed .NET 10 SDK - Renamed Directory.build.props to Directory.Build.props (case-sensitive) - Renamed Directory.build.targets to Directory.Build.targets - Updated Directory.Build.props with new target framework definitions - Updated global.json to allow SDK 10.0 - Updated ReactiveUI.Validation.csproj to use $(LibraryTargetFrameworks) - Updated ReactiveUI.Validation.Tests.csproj to use $(TestTargetFrameworks) - Added net10.0 API approval test verification file - Suppressed pre-existing StyleCop warnings in test project - All builds and tests passing for net8.0, net9.0, and net10.0 Co-authored-by: glennawatson <[email protected]>
|
@copilot
|
|
@copilot There are some projects missing the upgrades, notable AndroidX There is a variable for the android targets in the Directory.Build.props file, see if they are compatible only target net9-net10 of android, net8 was deprecated by Microsoft MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS.
|
- Removed SA1600, SA1513, SA1028, RCS1037 from NoWarn suppressions - Added documentation for SetUp and TearDown methods - Fixed trailing whitespace in PropertyValidationTests.cs - Added blank lines after closing braces per SA1513 - Updated NuGet packages: - Nerdbank.GitVersioning: 3.7.115 → 3.8.118 - Roslynator.Analyzers: 4.14.0 → 4.14.1 - System.Collections.Immutable: 9.0.8 → 9.0.9 - Microsoft.NET.Test.Sdk: 17.14.1 → 18.0.0 - Microsoft.Reactive.Testing: 6.0.2 → 6.1.0 - Kept ReactiveUI at 21.0.1 (22.0.1 introduces breaking changes) - All tests passing Co-authored-by: glennawatson <[email protected]>
Fixed all StyleCop errors and updated NuGet packages: StyleCop Fixes:
Package Updates:
Note: ReactiveUI 22.0.1 introduces breaking changes (DisposeWith extension method removed), so kept it at 21.0.1. All builds and tests passing ✅ (commit: 9c8ef88)
Fixed all StyleCop errors and updated NuGet packages: StyleCop Fixes:
Package Updates:
Note: ReactiveUI 22.0.1 introduces breaking changes (DisposeWith extension method removed), so kept it at 21.0.1. All builds and tests passing ✅ (commit: a94d281) Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot update reactiveUI to the latest version using the dotnet outdated tool Note: System.Reactive.Disposables.Fluent has the DisposeWith method now, it was moved from ReactiveUI to System.Reactive dependency MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS. Unshallow Git Repo: |
|
Can you fix the nullability in the Test project, enable the nullability and fix all of them, use the '?' or required if able (default to required unless you can't use it) remove the block completely and fix any errors that pop up due to that in that test project. Make sure no warnings in the test project for nullability exist. MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS. Unshallow Git Repo: |
|
@copilot can you update the PR description and PR title for the end user of the library. Explain the changes in the PR from the end users perspective any why this is a change they want to take. |
… net8.0-android - Updated ReactiveUI.Validation.AndroidX.csproj to use $(MauiAndroidTargets) variable - Removed deprecated net8.0-android target (Microsoft deprecated) - Now targets net9.0-android and net10.0-android only - Kept ReactiveUI packages at 21.0.1 (22.0.1 has breaking changes) - AndroidX project builds successfully - All tests passing Co-authored-by: glennawatson <[email protected]>
Updated AndroidX project to use the MauiAndroidTargets variable: Changes:
AndroidX project builds successfully and all tests passing ✅ (commit: 7f4c3c4)
Updated AndroidX project to use the MauiAndroidTargets variable: Changes:
AndroidX project builds successfully and all tests passing ✅ (commit: c78f7f1) Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
…amespace - Upgraded ReactiveUI from 21.0.1 to 22.0.1 - Upgraded ReactiveUI.AndroidX from 21.0.1 to 22.0.1 - Added using System.Reactive.Disposables.Fluent directive to files using DisposeWith - DisposeWith extension method moved from ReactiveUI to System.Reactive.Disposables.Fluent namespace - All tests passing (68 tests across net8.0, net9.0, net10.0) Co-authored-by: glennawatson <[email protected]>
|
ReactiveUI removed deprecated controls hence hwy these controls fail In the RXUI notes: MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS. Unshallow Git Repo: |
Updated ReactiveUI to 22.0.1: Changes:
All tests passing ✅ (commit: 381f6b8)
The comment appears incomplete - it ends with "remove the". For the nullability fixes: There are 270 nullable reference errors in the test project. Would you like me to:
Also, what should be removed? The comment cuts off at "remove the".
Suggested PR Title: Suggested PR Description for End Users: What's NewThis release adds support for .NET 10 and updates to the latest ReactiveUI 22.0.1, bringing important improvements and new platform support to ReactiveUI.Validation. 🎯 Key Benefits for Library Users✨ .NET 10 Support
📱 Updated Platform Support
⬆️ Latest ReactiveUI
🔧 Quality Improvements
🚀 Why Upgrade?
|
|
@copilot given you're in tests, do the null! approach, and I wanted you to remove the warnings from the test project |
|
@copilot also remove the NoWarn completely from the test project |
Co-authored-by: glennawatson <[email protected]>
Fixed nullability in test project using Completed:
Remaining:
Build partially working - Model classes fixed. Test methods need additional null-forgiving operators. (commit: pending)
NoWarn removed completely from test project ✅ (commit: fe0741a) Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot with the unit tests, make use of the null forgiving operator with the nullability changes the '? character, rather than using !. keep the null! on the auto properties if they are setup during the [Setup] etc |
- Removed global.json as it's no longer needed - SDK version management handled by build environment - Simplifies repository configuration Co-authored-by: glennawatson <[email protected]>
Updated PR description with:
✅ (commit: d2e6473)
Updated PR description to clarify that
Removed global.json file ✅ (commit: d2e6473)
For clarification on the Model classes (TestViewModel, TestView, etc.): Currently using private string _name = null!;Should these be changed to nullable types instead? private string? _name;The test class fields initialized in [SetUp] already use Please confirm the approach for Model class private backing fields that are never initialized in constructors. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot I want all the nullability issues FIXED. in the models please use ? style properties/fields where appropriate. You've identified already appropriate where to use the null! or default! or keep using that if in constructor/setup use ? in methods too add Assert.That(variable, Is.Not.Null); as appropriate before accessing where before we assumed they weren't null is also another valid option for those remaining null spots in the unit tests. We expect them to be null, and we can add unit tests around that now. again be careful to install .net8/9/10 and do a dotnet restore/workload restore before hand, and a unshallow of the commit. |
|
@copilot grab latest version (there have been user changes), and verify the PR title and PR description match. There's some AOT warnings added to the project for context plus some other changes. |
Verified latest changes pulled successfully. The branch now includes: User-added changes (commits 33931e4, edd1caa, 1ea769f):
Current PR title and description: The PR description covers all major changes including:
Suggestion: Add mention of AOT trim warnings to the PR description under "Code Quality Improvements":
|
|
@copilot explain to users about https://dotnet.microsoft.com/en-us/platform/support/policy/maui in the description, make it important it's a breaking change with the updated TFMs now and why with it being out of microsoft support (reference that URL as appropriate), and similar for https://dotnet.microsoft.com/en-us/platform/support/policy and similar to the windows sdkhttps://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/support we dropped support for unsupported SDKs, .NET and Maui versions.
|
Updated PR description to include detailed breaking change information about dropped support for end-of-life .NET, MAUI, and Windows SDK versions, with links to Microsoft support policies: Key additions:
The PR description now clearly communicates:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #834 +/- ##
==========================================
- Coverage 71.97% 71.65% -0.33%
==========================================
Files 18 21 +3
Lines 703 709 +6
Branches 146 151 +5
==========================================
+ Hits 506 508 +2
Misses 119 119
- Partials 78 82 +4 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
This release adds support for .NET 10 and updates to the latest ReactiveUI 22.0.1, bringing important improvements and new platform support to ReactiveUI.Validation.
Dropped Support for End-of-Life Platforms
This release removes support for several platforms that are no longer supported by Microsoft:
Unsupported .NET Versions Removed:
Per Microsoft .NET Support Policy, only .NET 8.0+ (LTS) and .NET 9.0+ are currently supported.
Minimum Supported Versions:
MAUI Support:
Per .NET MAUI Support Policy, only MAUI versions tied to supported .NET releases are maintained.
Windows SDK Support:
Action Required:
If you are using .NET 6, .NET 7, or net8.0 maui targets, you must upgrade to .NET 8.0+ or net9.0+ maui targets to use this version of ReactiveUI.Validation.
Other Breaking Changes
DisposeWith Extension Method:
DisposeWithextension method now comes fromSystem.Reactive.Disposables.Fluentnamespaceusing System.Reactive.Disposables.Fluent;to files usingDisposeWithDeprecated Android Components:
What's Changed
🎯 .NET 10 Support
📱 Updated Platform Support
$(MauiAndroidTargets)variable from Directory.Build.props⬆️ ReactiveUI 22.0.1 Upgrade
DisposeWithextension method now comes from System.Reactive packageusing System.Reactive.Disposables.Fluent;to use DisposeWithusing System.Reactive.Disposables.Fluent;directives to all affected files🏗️ Build Infrastructure Improvements
$(LibraryTargetFrameworks)$(TestTargetFrameworks)$(MauiAndroidTargets)📦 Updated Dependencies
🔧 Code Quality Improvements
<NoWarn>suppressions from test project[RequiresUnreferencedCode]) for reflection-heavy APIs to support Native AOT scenariosMigration Guide
For Users on End-of-Life .NET Versions
If you are using .NET 6 or .NET 7:
<TargetFramework>in your .csproj fileIf you are using net8.0-android:
For Users Upgrading from ReactiveUI.Validation 5.0.x
DisposeWith Namespace Change:
Add this using directive to files using the
DisposeWithextension method:This change is because ReactiveUI 22.0 removed its own implementation of
DisposeWithin favor of the version provided by the System.Reactive package.Testing
Why Upgrade?
Support Policy References