Skip to content

Commit c17c624

Browse files
authored
[main] Net10.0 (#32110)
## What's Changed .NET MAUI main-to-net10.0 introduces significant improvements across all platforms with focus on quality, performance, and developer experience. This release includes 159 commits with various improvements, bug fixes, and enhancements. ## .NET MAUI Product Fixes ## .NET 10 Features - [net10.0] Merge main to net10 by @rmarinho in #31210 - [net10.0] Move to net10 rc2 by @rmarinho in #31511 - [net10.0] Update net10 by @rmarinho in #31296 - [NET10] Make IPlatformMeasureInvalidationController public by @Copilot in #31133 - [net10.0] Update net10.0 with main by @PureWeen in #31699 - [net10.0] Merge main to net10.0 by @rmarinho in #31792 - [net10.0] [housekeeping] Update maui net9 by @github-actions[bot] in #31856 <details> <summary>🔧 Fixes</summary> - [[housekeeping] Update maui net9](#31853) </details> - [net10] Move to rtm by @rmarinho in #31883 - [net10.0] Bumps Syncfusion.Maui.Toolkit dependency to version 1.0.7 by @github-actions[bot] in #31952 <details> <summary>🔧 Fixes</summary> - [Bumps Syncfusion.Maui.Toolkit dependency to version 1.0.7](#31932) </details> - [NET10.0] Change ContentPage SafeAreaEdges default to None for consistent edge-to-edge behavior by @Copilot in #31926 <details> <summary>🔧 Fixes</summary> - [[NET10.0] Change all defaults of SafeAreaEdges so that they will return "None" as the default if the user hasn't set the value](#31925) </details> ## Android - [Testing] Run UI tests with CoreCLR on Android by @rmarinho in #30842 <details> <summary>🔧 Fixes</summary> - [[Testing] Run UI tests with CoreCLR on Android](#30278) </details> - [android] 20250820 net10.0 ecosystem updates by @jonathanpeppers in #31265 - [android] update AOT profile for .NET 10 RC 2 by @jonathanpeppers in #31768 - Implement SafeAreaEdges property and per-edge safe area control for Android by @NirmalKumarYuvaraj in #31022 ## Aspire - Only enable Aspire functionality in non-optimized builds (i.e. Debug) by @jfversluis in #31494 ## BlazorWebView - Use the WebView2CompositionControl in Blazor WPF by @mattleibow in #31777 ## Collectionview - [NET 10/ WinUI] Open item template context by @pictos in #30852 <details> <summary>🔧 Fixes</summary> - [[NET 10] Open more APIs](#30762) </details> - Update ui-tests.yml timeout to account for CollectionView by @PureWeen in #31233 - [net10.0] [Testing] Fix for flaky test(CollectionViewHeaderShouldNotScroll) in CI by @github-actions[bot] in #31933 <details> <summary>🔧 Fixes</summary> - [[Testing] Fix for flaky test(CollectionViewHeaderShouldNotScroll) in CI](#31914) </details> ## Controls Dialogalert - Fix `DisplayAlert` to properly pass the `cancel` parameter to `DisplayAlertAsync` by @thisisthekap in #31474 <details> <summary>🔧 Fixes</summary> - [Page.DisplayAlert(title, message, accept, cancel, flowDirection) is causing ArgumentNullException](#31473) </details> ## Controls Hybridwebview - HybridWebView Bi-Directional Exception Handling by @Copilot in #31521 <details> <summary>🔧 Fixes</summary> - [HybridWebView needs a consistent and usable story for handling C# methods that throw exceptions](#27096) </details> ## Controls Radiobutton - [.NET 10] Fix RadioButton Test Failure by @Tamilarasan-Paranthaman in #31772 ## Core - Make more .NET MAUI Views public by @jsuarezruiz in #30872 <details> <summary>🔧 Fixes</summary> - [[NET 10] Open more APIs](#30762) </details> - [android] update AOT profile for .NET 10 RC 1 by @jonathanpeppers in #31187 ## Core Lifecycle - Dispose IServiceScope when window is destroyed to prevent memory leaks by @Copilot in #30196 <details> <summary>🔧 Fixes</summary> - [IServiceScope should get disposed when the associated window is destroyed or closed](#8538) </details> - Expose Android Activity and Modal Dialog OnKey* overrides via ConfigureLifecycleEvents with generalized context parameter by @Copilot in #31206 <details> <summary>🔧 Fixes</summary> - [Expose Android Activity OnKey* overrides via ConfigureLifecycleEvents](#31205) </details> ## DateTimePicker - Fix DatePicker displays today's date instead of blank state when Date is null by @prakashKannanSf3972 in #30657 <details> <summary>🔧 Fixes</summary> - [[iOS] Fix DatePicker to default to Today's date when Date is null/MinimumDate](#30642) - [[iOS/Catalyst] If the user specifies NULL for the DatePicker then the picker should default to Todays date when it's opened](#30641) </details> - Fixed DatePicker's DateSelected event not firing on Windows - NET 10 Preview 6 by @Dhivya-SF4094 in #30748 <details> <summary>🔧 Fixes</summary> - [DatePicker's DateSelected event not firing on Windows - .NET 10 Preview 6](#30736) </details> - Add converters to DatePicker and TimePicker for DateOnly and TimeOnly by @Vignesh-SF3580 in #30790 <details> <summary>🔧 Fixes</summary> - [XAML DatePicker Control Does Not Update DateOnly Items](#20438) </details> ## Docs - DependencyService API docs fixes by @jfversluis in #31392 ## Essentials - [Essentials] Add microphone permission handling on Windows and tests by @morning4coffe-dev in #31451 <details> <summary>🔧 Fixes</summary> - [`Permissions.Microphone` returns `Granted` on Windows (partial trust) even when denied](#31413) </details> ## Essentials Texttospeech - [Essentials: Text to speech] Overwrite system default voice by @yeelut in #31105 <details> <summary>🔧 Fixes</summary> - [Text-To-Speech unable to override system's default voices](#26853) </details> ## Flyout - 30985:Fix FlyoutPage Navigating args to not reach down into the NavigationPage by @SuthiYuvaraj in #31232 <details> <summary>🔧 Fixes</summary> - [[Enhancement] Changes in navigation events parameters](#28384) - [[NET10.0] Fix FlyoutPage Navigating args to not reach down into the NavigationPAge](#30985) </details> ## Frame - Use `ToLowerInvariant().Contains(...)` for .NET Framework by @StephaneDelcroix in #31353 ## Gestures - Align `OnDoubleTap` behavior on Windows and Android by @MartyIX in #20870 <details> <summary>🔧 Fixes</summary> - [TapGestureRecognizer NumberOfTapsRequired=2 Handled Differently on Windows and Android](#16235) </details> - Implement `PointerGestureRecognizer` Buttons by @morning4coffe-dev in #31214 <details> <summary>🔧 Fixes</summary> - [Differentiate Left/Right click in PointerGestureRecognizer](#24666) </details> ## Image - [Windows] Fix `ImageHandler` Vertical&Horizontal Options with AspectFit by @morning4coffe-dev in #30936 <details> <summary>🔧 Fixes</summary> - [Image under WinUI does not respect VerticalOptions and HorizontalOptions](#30403) </details> ## Infrastructure - Net10 merge main by @PureWeen in #31160 - [net10.0] Update to RC1 by @rmarinho in #31171 - [android] 20250618 net10.0 ecosystem updates by @jonathanpeppers in #30059 - Mark Performance and IPerformanceProvider types as obsolete and remove all usages by @Copilot in #30942 <details> <summary>🔧 Fixes</summary> - [[Copilot] Set Microsoft.Maui.Controls.Internals.Performance and Microsoft.Maui.Controls.Internals.IPerformanceProvider to Obsolete with ISError set to true](#30385) </details> - [ci] Update rc1 dependencies by @rmarinho in #31211 - [XSG] enable/disable feature in msbuild by @StephaneDelcroix in #31349 - Localized file check-in by OneLocBuild Task: Build definition ID 13330: Build ID 12341555 by @dotnet-bot in #31479 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31594 - [ci] Fix find simulator with new Xcode on the machine by @rmarinho in #31586 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31613 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31635 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31678 - [net10.0] Update dependencies from dotnet/macios by @dotnet-maestro[bot] in #31679 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31690 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31698 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #31767 - [net10.0] Update dependencies from dotnet/dotnet by @dotnet-maestro[bot] in #31600 - [ci] Update to latest rc2 by @rmarinho in #31771 - [ci] Add internal release trigger by @rmarinho in #31809 - Separate snapshot diffs artifacts in CI by @jfversluis in #31724 - Localized file check-in by OneLocBuild Task: Build definition ID 13330: Build ID 12504892 by @dotnet-bot in #31845 - [ci] Update maui to 9.0.111 by @rmarinho in #31864 - [net10.0] Update dependencies from dotnet/dotnet by @dotnet-maestro[bot] in #31983 - [net10.0] Update dependencies from dotnet/macios by @dotnet-maestro[bot] in #32022 - [net10.0] Update dependencies from dotnet/android by @dotnet-maestro[bot] in #32024 - [net10.0] Update dependencies from dotnet/dotnet by @dotnet-maestro[bot] in #32074 - [net10.0] Update dependencies from dotnet/macios by @dotnet-maestro[bot] in #32075 - [ci] Update Xcode and correct simulator by @rmarinho in #32095 - [net10.0] Update dependencies from dotnet/dotnet by @dotnet-maestro[bot] in #32085 ## Layout - Mark CompressedLayout API as obsolete and remove XML documentation by @Copilot in #31052 - Remove edge to edge from top level container by @PureWeen in #31193 <details> <summary>🔧 Fixes</summary> - [[Android] EdgeToEdge does not work for Modal page](#24903) - [Your app uses deprecated APIs or parameters for edge-to-edge (Android 15)](#26788) - [The status bar is blank when ManualMAUITests sample project debugging on the “Android16.0- API 36” emulator](#29954) </details> - Change ComputeConstraintForView to return LayoutConstraint instead of using side effects by @Copilot in #31091 <details> <summary>🔧 Fixes</summary> - [Change ComputeConstraintForView to return constraint and set ComputedConstraint via return value (.NET 10.0)](#31083) </details> - [Android] Create a Java layer for LayoutViewGroup by @albyrock87 in #31601 <details> <summary>🔧 Fixes</summary> - [Reduce layout pass java to dotnet jni calls](#31595) </details> ## Localization - fix resources localization by @StephaneDelcroix in #31466 ## Mediapicker - Fix wrongful closing modal when using MediaPicker by @jfversluis in #31500 <details> <summary>🔧 Fixes</summary> - [[iOS] Fix MediaPicker modal dismissal issue in CapturePhotoAsync/CaptureVideoAsync](#31470) - [[iOS] MAUI Essentials MediaPicker.CapturePhotoAsync / CaptureVideoAsync causes modal page to dismiss unexpectedly](#31075) </details> ## Navigation - [Net10] [iOS] Set NavigationBar.Translucent based on NavigationPage BarBackgroundColor transparency by @Tamilarasan-Paranthaman in #30981 - [net10.0] Invert NavigationPage UseMauiHandler flag by @github-actions[bot] in #31873 <details> <summary>🔧 Fixes</summary> - [Invert NavigationPage UseMauiHandler flag](#31859) </details> ## Other - [XC|XSG] fix target resolution by @StephaneDelcroix in #31229 <details> <summary>🔧 Fixes</summary> - [XamlC error XC0000 when using VisualState on custom control](#31186) </details> - NET 10 - Added command and command parameter for CheckBox control by @NirmalKumarYuvaraj in #31036 <details> <summary>🔧 Fixes</summary> - [Command is missing on Checkbox control](#7394) - [added Command and CommandParameter on CheckBox](#20717) </details> - [XSG] simple support for `required` by @StephaneDelcroix in #30928 <details> <summary>🔧 Fixes</summary> - [[XSG] Get `required` working](#30491) </details> - [XSG] double cast on Add by @StephaneDelcroix in #31367 - Mark OffscreenPageLimitProperty as obsolete and remove unused code by @Copilot in #31306 - [XSG] simplify OnPlatform by @StephaneDelcroix in #31421 - [XSG] Fix ValueProvider creation by @StephaneDelcroix in #31434 <details> <summary>🔧 Fixes</summary> - [XSG generate call to obsolete ctor SimpleValueTargetProvider](#31381) </details> - [XSG] Refactor ProjectItem by @StephaneDelcroix in #31427 - [XSG] report diagnostic if we can't Add by @StephaneDelcroix in #31462 - Enhance maui-mobile developer sample with recent updates by @Vignesh-SF3580 in #31489 - Add DisplayRotationStateTrigger for granular device rotation control by @Copilot in #31297 - [Testing] Fixed Test case failure in Update main net10 by @TamilarasanSF4853 in #31592 - [X] remove IElementNode interface by @StephaneDelcroix in #31559 - [Testing] Fixed Test case failure in Update main net10 - 2 by @TamilarasanSF4853 in #31632 - [X] avoid enumerating 3 times by @StephaneDelcroix in #31622 <details> <summary>🔧 Fixes</summary> - [[NET10.0] Performance Regression related to XAML Parsing](#31172) </details> - [SG] generated code behind for RD in global xmlns by @StephaneDelcroix in #31623 <details> <summary>🔧 Fixes</summary> - [Build succeeds with bad XAML - source gen](#31602) </details> - [XSG] make sure RD are properly inflated, and loaded by @StephaneDelcroix in #31482 <details> <summary>🔧 Fixes</summary> - [.NET10-rc1 - XamlSourceGen - Partial method XXX.InitializeComponent()' must have an implementation part because it has accessibility modifiers.](#31571) </details> - [XSG] support xClassModifier by @StephaneDelcroix in #31754 <details> <summary>🔧 Fixes</summary> - [.NET10-rc1 The type or namespace name 'XamlProcessingAttribute' could not be found](#31550) </details> - LEGO: Pull request from lego/hb_aa4ddd3b-37ca-4d87-a058-1e95d9ca2d38_20251001194204838 to net10.0 by @csigs in #31841 - [XSG] trim color by @StephaneDelcroix in #32035 <details> <summary>🔧 Fixes</summary> - [[XSG] input needs to be trimmed](#32034) </details> - Merge main into net10 by @PureWeen in #32079 ## ProgressBar - [Testing] Fix for the ProgressSpinnerWorksWhenReEnabled flaky test in CI by @TamilarasanSF4853 in #31951 ## RefreshView - Add IsRefreshEnabled Property and Platform-Consistent IsEnabled Semantics to RefreshView by @Copilot in #30692 <details> <summary>🔧 Fixes</summary> - [[Android] Swapping out the content of a RefreshView breaks on Android](#28361) - [Proposal: Add IsRefreshEnabled Property and Platform-Consistent IsEnabled Semantics to RefreshView](#30690) </details> ## Shapes - [XSG] Correct lineinfo for expanded markups by @StephaneDelcroix in #31641 <details> <summary>🔧 Fixes</summary> - [[XSG] fix line and position error reporting](#30855) </details> - [Windows] Fix `LineHeight` values <1 having no effect by setting `LineStackingStrategy` to `BlockLineHeight` by @MartyIX in #31289 <details> <summary>🔧 Fixes</summary> - [[Windows] Change the LineStackingStrategy to BlockLineHeight for Labels on Windows](#24520) - [[Windows] Fix LineHeight values < 1 having no effect by setting LineStackingStrategy to BlockLineHeight](#31219) </details> ## Shell - Check if tab bar hidden value actually changed for Shell by @jfversluis in #31149 - [iOS] Auto Resize chrome icons on iOS to make it more consistent with other platforms - Toolbar items by @kubaflo in #30995 <details> <summary>🔧 Fixes</summary> - [[iOS] Auto Resize chrome icons on iOS to make it more consistent with other platforms - Toolbar items](#30994) </details> - Fix modal and Shell edge to edge scenarios by @PureWeen in #31221 <details> <summary>🔧 Fixes</summary> - [[Android] EdgeToEdge does not work for Modal page](#24903) </details> - Shell - Propagate BackButtonBehaviorProperty by @kubaflo in #28615 <details> <summary>🔧 Fixes</summary> - [Setting BackButtonBehavior to not visible or not enabled does not work](#28570) </details> ## Templates - Removed ListView styles from the default project template by @sheiksyedm in #31155 <details> <summary>🔧 Fixes</summary> - [The warning of XLS1111 appears once open MAUI App file Resources\Styles\Styles.xaml](#31146) </details> - Update .NET Bot for .NET 10 by @jfversluis in #31161 - [net10.0] Fix DeveloperBalance ProjectList page fails to load correctly by @SuthiYuvaraj in #31158 <details> <summary>🔧 Fixes</summary> - [[net10.0] DeveloperBalance ProjectList page fails to load correctly](#31152) </details> - Enhance maui-mobile developer sample with recent updates by @SuthiYuvaraj in #31151 <details> <summary>🔧 Fixes</summary> - [Sync back accessibility fixes from Developer Balance sample to templates](#31069) </details> - Revert template changes by @PureWeen in #31301 - Fix Aspire ServiceDefaults project template naming by @jfversluis in #31616 <details> <summary>🔧 Fixes</summary> - [Aspire ServiceDefaults project name doesn't use provided name](#30365) </details> - Update the Blazor project templates by @mattleibow in #31721 <details> <summary>🔧 Fixes</summary> - [Keep Blazor Hybrid templates in sync with Blazor & MAUI](#26439) </details> - [net10.0] Delete GlobalXmlns.cs from maui-mobile template by @github-actions[bot] in #31744 <details> <summary>🔧 Fixes</summary> - [Delete GlobalXmlns.cs from maui-mobile template](#31730) </details> - Update multi-project template to .NET 10 by @jfversluis in #31774 - Clean up Extensions.cs by removing TODO comments by @jfversluis in #31901 - Enable OpenTelemetry metrics and tracing for MAUI in Service Defaults by @jfversluis in #31900 <details> <summary>🔧 Fixes</summary> - [Enable MAUI SDK diagnostics by default for Aspire](#31846) </details> - Enhance maui-mobile developer sample with recent updates by @Vignesh-SF3580 in #31646 - [net10.0] Clean up template options for the CLI by @mattleibow in #31849 <details> <summary>🔧 Fixes</summary> - [Blazor Hybrid & Web Solution Template: Template options need updating ](#23168) </details> - Remove DisableDevCertSecurityCheck method in Aspire Service Defaults template by @jfversluis in #31965 - Disable MAUI telemetry for Aspire ServiceDefaults by default by @jfversluis in #32089 ## Theming - Fix loading ResourceDictionary from source by @simonrozsival in #31435 <details> <summary>🔧 Fixes</summary> - [[NET10.0] Unable to deploy basic template on ios/android in release mode](#31308) </details> ## Toolbar - [iOS] ToolbarItems can no longer be manipulated after an incomplete "Back" gesture on iOS - fix by @kubaflo in #31303 <details> <summary>🔧 Fixes</summary> - [[iOS] `ToolbarItems` can no longer be manipulated after an incomplete "Back" gesture on iOS.](#31278) </details> ## WebView - [net10.0] Temporarily disable flaky WebView tests using FlakyTest attribute by @github-actions[bot] in #31882 <details> <summary>🔧 Fixes</summary> - [Temporarily disable flaky WebView tests using FlakyTest attribute](#31868) </details> ## Window - Make IsActivated property public in Window.cs by @pictos in #30987 <details> <summary>🔧 Fixes</summary> - [[NET 10] Open more APIs](#30762) </details> ## Windows - Revert "Expose DispatcherExtensions so it could be used outside of Maui as well" by @jfversluis in #31184 <details> <summary>🔧 Fixes</summary> - [[net10.0] MAUI no longer marshalls bindable updates to the UI thread](#31139) - [Expose DispatcherExtensions so it could be used outside of Maui as well](#30488) </details> ## Xaml - Xaml Inflator parameters by @StephaneDelcroix in #30980 <details> <summary>🔧 Fixes</summary> - [[XSG] Passing parameters to the inflators](#30877) </details> - Always use dot separators in XAML SG converters by @jfversluis in #31225 <details> <summary>🔧 Fixes</summary> - [[.NET10-preview7] XAML Source Generator - Grid Error + Warnings](#31142) </details> - fix10 by @StephaneDelcroix in #31459 - [XSG] Use absolute file paths when generating #line by @simonrozsival in #31519 <details> <summary>🔧 Fixes</summary> - [[XG] XamlG generates invalid #line paths](#31454) </details> - Refactor XAML SourceGen TypeConverters by @jfversluis in #31467 - [templates] do not use 'required' in xaml controls by @StephaneDelcroix in #31564 - [XSG] Fix enum converter by @simonrozsival in #31702 - [X|C] only use a single GridLengthTypeConverter by @StephaneDelcroix in #29376 <details> <summary>🔧 Fixes</summary> - [OnIdiom<GridLength> throws an not implemented Exception (in GridLengthTypeConverter)](#29334) </details> - [XSG] Simplify ColorConverter by @simonrozsival in #31660 ## iOS - Avoid useless measure passes on iOS by @albyrock87 in #31485 <details> <summary>🔧 Fixes</summary> - [[Testing] UITest to measure layout passes on a common scenario](#25671) </details> - [NET10] [iOS] Fix SafeArea does not correctly account for the view area under the soft input by @Tamilarasan-Paranthaman in #31352 <details> <summary>🔧 Fixes</summary> - [[iOS] SafeArea doesn't properly account for how much of a view is under the soft input](#31191) </details> - [iOS] Update net10 iOS to rc2 by @rmarinho in #31749 <details> <summary>🧪 Testing (17)</summary> - [Testing] Feature matrix UITest Cases for ScrollView Control by @NafeelaNazhir in #30188 - [net10.0, Testing] Fixed test failures on merge main net10.0 by @NafeelaNazhir in #31168 - [net10.0] Add UnconditionalSuppressMessage attributes to fix NativeAOT by @rmarinho in #31231 - [MacCatalyst] DatePicker null date handling by @jsuarezruiz in #31365 <details> <summary>🔧 Fixes</summary> - [[MacCatalyst] Setting NULL for the DatePicker then the picker should default to Todays date when it's opened](#31124) </details> - Added a README with details about how to compile the manual tests by @jsuarezruiz in #31373 - [Testing] Re-enable iOS NativeAOT and Mono full trimming tests by handling ObjCRuntime warnings by @jsuarezruiz in #31397 <details> <summary>🔧 Fixes</summary> - [[testing] Reenable "NativeAOT" and "Mono full" tests for iOS](#29059) </details> - [Testing] Fix for flaky test(PullToRefreshWorksWhenEnabled) in CI by @NafeelaNazhir in #31625 - [Testing] Added new SafeAreaEdges categories in UITest and adjusted screenshot logic for API 36 by @Ahamed-Ali in #31655 <details> <summary>🔧 Fixes</summary> - [[Testing] Added new SafeAreaEdges categories in UITest and created separate lane to run the category in API 36](#31355) </details> - [Testing] Feature matrix UITest Cases for ScrollView with LayoutOptions by @NafeelaNazhir in #31650 <details> <summary>🔧 Fixes</summary> - [[Testing] Add tests validating all the permutations of layoutoptions with scrollview](#30698) - [[Testing] Feature matrix UITest Cases for ScrollView with LayoutOptions](#31122) </details> - Add 'SafeAreaEdges' to UI tests configuration by @jfversluis in #31709 <details> <summary>🔧 Fixes</summary> - [[Testing] Added new SafeAreaEdges categories in UITest and adjusted screenshot logic for API 36 ](#31655) </details> - [Testing] Fixed Test case failure in Update main net10 by @TamilarasanSF4853 in #31729 - Fixed the compilation issue to merge main changes to net10 by @sheiksyedm in #31762 - [Testing] Fixed Test case failure in net10_main_merge by @TamilarasanSF4853 in #31773 - [ci] Fix helix local by @rmarinho in #31796 - [tests] Try run device tests with CoreClr by @rmarinho in #30686 <details> <summary>🔧 Fixes</summary> - [[Testing] Run Controls.DeviceTests with CoreCLR on Android](#30277) </details> - [ci] Fix net10 UiTests by @rmarinho in #31837 - [testing] Update device testing by @rmarinho in #31909 </details> <details> <summary>🏠 Housekeeping (7)</summary> - remove dupe by @StephaneDelcroix in #31420 - [net10.0] [ci] Fix branch classification by @github-actions[bot] in #31812 <details> <summary>🔧 Fixes</summary> - [[ci] Fix branch classification](#31811) </details> - [housekeeping] Automated PR to fix formatting errors on main by @github-actions[bot] in #31802 - [ci] Fix branch classification by @rmarinho in #31816 - LEGO: Pull request from lego/hb_aa4ddd3b-37ca-4d87-a058-1e95d9ca2d38_20251002185521508 to net10.0 by @csigs in #31851 - Localized file check-in by OneLocBuild Task: Build definition ID 13330: Build ID 12507670 by @dotnet-bot in #31854 - [net10.0] [c] Run apiscan on release branches and main by @github-actions[bot] in #31904 <details> <summary>🔧 Fixes</summary> - [[c] Run apiscan on release branches and main](#31903) </details> </details> **Full Changelog**: main...net10.0
2 parents b92aa68 + c0e9c32 commit c17c624

File tree

3,939 files changed

+83279
-35032
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,939 files changed

+83279
-35032
lines changed

.config/dotnet-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"rollForward": false
2525
},
2626
"microsoft.dotnet.xharness.cli": {
27-
"version": "9.0.0-prerelease.25517.1",
27+
"version": "10.0.0-prerelease.25506.2",
2828
"commands": [
2929
"xharness"
3030
],

.github/DEVELOPMENT.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ Use ‘main’ for bug fixes that don’t require API changes. For new features
7474
7575
- [Testing Wiki](https://github.com/dotnet/maui/wiki/Testing)
7676
77+
## Generating PublicAPI Files
78+
79+
If you've added new public APIs and are getting build errors about missing API declarations, you'll need to update the PublicAPI files. You can generate the PublicAPI files manually by building a project with the `PublicApiType=Generate` property:
80+
81+
```dotnetcli
82+
dotnet build ./src/Controls/src/Core/Controls.Core.csproj /p:PublicApiType=Generate
83+
```
84+
85+
This approach will generate the `PublicAPI.Unshipped.txt` files for that specific project. You may need to run this for each project that has new public APIs.
86+
87+
**Note:** If you're still having troubles with PublicAPI errors, you can delete all the content in the relevant `PublicAPI.Unshipped.txt` files and then run the command above to regenerate them completely.
88+
7789

7890
## Stats
7991

.github/ISSUE_TEMPLATE/bug-report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,4 @@ body:
186186
- type: markdown
187187
attributes:
188188
value: |
189-
By opening the issue you agree to follow this project's [Code of Conduct](https://github.com/dotnet/maui/blob/main/.github/CODE_OF_CONDUCT.md)
189+
By opening the issue you agree to follow this project's [Code of Conduct](https://github.com/dotnet/maui/blob/main/.github/CODE_OF_CONDUCT.md)

.github/copilot-instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,4 @@ Always put that at the top, without the block quotes. Without it, the users will
276276

277277
---
278278

279-
**Note for Future Updates:** This document should be expanded as new development patterns, tools, or workflows are discovered. Add sections for specific scenarios, debugging techniques, or tooling as they become relevant to the development process.
279+
**Note for Future Updates:** This document should be expanded as new development patterns, tools, or workflows are discovered. Add sections for specific scenarios, debugging techniques, or tooling as they become relevant to the development process.

.gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ bld/
4444

4545
# Visual Studio 2017 auto generated files
4646
Generated\ Files/
47+
Generated/
4748

4849
# MSTest test Results
4950
[Tt]est[Rr]esult*/
@@ -186,9 +187,6 @@ publish/
186187
# Publish Web Output
187188
*.[Pp]ublish.xml
188189
*.azurePubxml
189-
# Note: Comment the next line if you want to checkin your web deploy settings,
190-
# but database connection strings (with potential passwords) will be unencrypted
191-
*.pubxml
192190
*.publishproj
193191

194192
# Microsoft Azure Web App publish settings. Comment the next line if you want to

Directory.Build.props

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,20 @@
22
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
33
<Import Condition="'$(EnvironmentBuildPropsImported)' != 'True'" Project="$(MSBuildThisFileDirectory)eng\Environment.Build.props" />
44

5+
<PropertyGroup>
6+
<!--
7+
Keep backward compatibility with XamlC, XamlCompilationAttribute, and xaml-comp processing instruction
8+
When we're ready to turn this off, we can remove all code depending on this condition, and drop this property group
9+
-->
10+
11+
<_MauiXamlSourceGenBackCompat>true</_MauiXamlSourceGenBackCompat>
12+
<DefineConstants Condition=" '$(_MauiXamlSourceGenBackCompat)' == 'true' ">$(DefineConstants);_MAUIXAML_SOURCEGEN_BACKCOMPAT</DefineConstants>
13+
</PropertyGroup>
14+
515
<PropertyGroup>
616
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
17+
<!-- Detailed trimmer warnings, if present -->
18+
<TrimmerSingleWarn>false</TrimmerSingleWarn>
719
<DebugType>portable</DebugType>
820
<DebugSymbols>true</DebugSymbols>
921
<LangVersion>Latest</LangVersion>
@@ -33,7 +45,7 @@
3345
<LicenseFile>$(MauiRootDirectory)LICENSE.TXT</LicenseFile>
3446
<PackageIconFullPath>$(MauiRootDirectory)Assets\icon.png</PackageIconFullPath>
3547
<PackageThirdPartyNoticesFile>$(MauiRootDirectory)THIRD-PARTY-NOTICES.TXT</PackageThirdPartyNoticesFile>
36-
<DefaultPackageTags>dotnet-maui;dotnet;maui;cross-platform;ios;android;macos;maccatalyst;windows;winui;tizen</DefaultPackageTags>
48+
<DefaultPackageTags>dotnet-maui;dotnet;maui;cross-platform;ios;android;macos;maccatalyst;windows;winui</DefaultPackageTags>
3749
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3850
<EmbedUntrackedSources>true</EmbedUntrackedSources>
3951
<IncludeSymbols>true</IncludeSymbols>
@@ -46,12 +58,12 @@
4658
</PropertyGroup>
4759

4860
<PropertyGroup>
49-
<_MauiDotNetVersionMajor Condition="'$(_MauiDotNetVersionMajor)' == ''">9</_MauiDotNetVersionMajor>
61+
<_MauiDotNetVersionMajor Condition="'$(_MauiDotNetVersionMajor)' == ''">10</_MauiDotNetVersionMajor>
5062
<_MauiDotNetVersionMinor Condition="'$(_MauiDotNetVersionMinor)' == ''">0</_MauiDotNetVersionMinor>
5163
<_MauiDotNetVersion Condition="'$(_MauiDotNetVersion)' == ''">$(_MauiDotNetVersionMajor).$(_MauiDotNetVersionMinor)</_MauiDotNetVersion>
5264
<_MauiDotNetTfm Condition="'$(_MauiDotNetTfm)' == ''">net$(_MauiDotNetVersion)</_MauiDotNetTfm>
5365

54-
<_MauiPreviousDotNetVersionMajor Condition="'$(_MauiPreviousDotNetVersionMajor)' == ''">8</_MauiPreviousDotNetVersionMajor>
66+
<_MauiPreviousDotNetVersionMajor Condition="'$(_MauiPreviousDotNetVersionMajor)' == ''">9</_MauiPreviousDotNetVersionMajor>
5567
<_MauiPreviousDotNetVersionMinor Condition="'$(_MauiPreviousDotNetVersionMinor)' == ''">0</_MauiPreviousDotNetVersionMinor>
5668
<_MauiPreviousDotNetVersion Condition="'$(_MauiPreviousDotNetVersion)' == ''">$(_MauiPreviousDotNetVersionMajor).$(_MauiPreviousDotNetVersionMinor)</_MauiPreviousDotNetVersion>
5769
<_MauiPreviousDotNetVersionNoDot Condition="'$(_MauiPreviousDotNetVersionNoDot)' == ''">$(_MauiPreviousDotNetVersionMajor)$(_MauiPreviousDotNetVersionMinor)</_MauiPreviousDotNetVersionNoDot>
@@ -117,8 +129,8 @@
117129
<!-- this is CI, so everything should be there -->
118130
<PropertyGroup Condition="('$(CI)' == 'true' or '$(TF_BUILD)' == 'true') and ('$(BuildTaskOnlyBuild)' != 'true')">
119131
<IncludeWindowsTargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">true</IncludeWindowsTargetFrameworks>
120-
<!-- Disabled until net9.0-tizen is available -->
121-
<IncludeTizenTargetFrameworks>true</IncludeTizenTargetFrameworks>
132+
<!-- Disabled until net10.0-tizen is available -->
133+
<IncludeTizenTargetFrameworks>false</IncludeTizenTargetFrameworks>
122134
<IncludeMacOSTargetFrameworks Condition="!$([MSBuild]::IsOSPlatform('linux'))">true</IncludeMacOSTargetFrameworks>
123135
<IncludeAndroidTargetFrameworks>true</IncludeAndroidTargetFrameworks>
124136
<IncludeMacCatalystTargetFrameworks Condition="!$([MSBuild]::IsOSPlatform('linux'))">true</IncludeMacCatalystTargetFrameworks>
@@ -145,25 +157,25 @@
145157
<!-- version number information -->
146158
<PropertyGroup>
147159
<!-- Default versions from the SDKs (update when there is a new TFM version) -->
148-
<IosTargetFrameworkVersionSdkDefault>18.0</IosTargetFrameworkVersionSdkDefault>
149-
<TvosTargetFrameworkVersionSdkDefault>18.0</TvosTargetFrameworkVersionSdkDefault>
150-
<MacCatalystTargetFrameworkVersionSdkDefault>18.0</MacCatalystTargetFrameworkVersionSdkDefault>
151-
<MacosTargetFrameworkVersionSdkDefault>15.0</MacosTargetFrameworkVersionSdkDefault>
152-
<AndroidTargetFrameworkVersionSdkDefault>35.0</AndroidTargetFrameworkVersionSdkDefault>
160+
<IosTargetFrameworkVersionSdkDefault>26.0</IosTargetFrameworkVersionSdkDefault>
161+
<TvosTargetFrameworkVersionSdkDefault>26.0</TvosTargetFrameworkVersionSdkDefault>
162+
<MacCatalystTargetFrameworkVersionSdkDefault>26.0</MacCatalystTargetFrameworkVersionSdkDefault>
163+
<MacosTargetFrameworkVersionSdkDefault>26.0</MacosTargetFrameworkVersionSdkDefault>
164+
<AndroidTargetFrameworkVersionSdkDefault>36.0</AndroidTargetFrameworkVersionSdkDefault>
153165
<!-- Current .NET -->
154-
<IosTargetFrameworkVersion>18.0</IosTargetFrameworkVersion>
155-
<TvosTargetFrameworkVersion>18.0</TvosTargetFrameworkVersion>
156-
<MacCatalystTargetFrameworkVersion>18.0</MacCatalystTargetFrameworkVersion>
157-
<MacosTargetFrameworkVersion>15.0</MacosTargetFrameworkVersion>
158-
<AndroidTargetFrameworkVersion>35.0</AndroidTargetFrameworkVersion>
166+
<IosTargetFrameworkVersion>26.0</IosTargetFrameworkVersion>
167+
<TvosTargetFrameworkVersion>26.0</TvosTargetFrameworkVersion>
168+
<MacCatalystTargetFrameworkVersion>26.0</MacCatalystTargetFrameworkVersion>
169+
<MacosTargetFrameworkVersion>26.0</MacosTargetFrameworkVersion>
170+
<AndroidTargetFrameworkVersion>36.0</AndroidTargetFrameworkVersion>
159171
<WindowsTargetFrameworkVersion>10.0.19041.0</WindowsTargetFrameworkVersion>
160172
<Windows2TargetFrameworkVersion>10.0.20348.0</Windows2TargetFrameworkVersion>
161173
<TizenTargetFrameworkVersion>7.0</TizenTargetFrameworkVersion>
162174
<!-- Previous .NET -->
163-
<IosPreviousTargetFrameworkVersion>17.5</IosPreviousTargetFrameworkVersion>
164-
<TvosPreviousTargetFrameworkVersion>17.5</TvosPreviousTargetFrameworkVersion>
165-
<MacCatalystPreviousTargetFrameworkVersion>17.5</MacCatalystPreviousTargetFrameworkVersion>
166-
<MacosPreviousTargetFrameworkVersion>14.5</MacosPreviousTargetFrameworkVersion>
175+
<IosPreviousTargetFrameworkVersion>18.0</IosPreviousTargetFrameworkVersion>
176+
<TvosPreviousTargetFrameworkVersion>18.0</TvosPreviousTargetFrameworkVersion>
177+
<MacCatalystPreviousTargetFrameworkVersion>18.0</MacCatalystPreviousTargetFrameworkVersion>
178+
<MacosPreviousTargetFrameworkVersion>15.0</MacosPreviousTargetFrameworkVersion>
167179
<AndroidPreviousTargetFrameworkVersion>35.0</AndroidPreviousTargetFrameworkVersion>
168180
<WindowsPreviousTargetFrameworkVersion>10.0.19041.0</WindowsPreviousTargetFrameworkVersion>
169181
<Windows2PreviousTargetFrameworkVersion>10.0.20348.0</Windows2PreviousTargetFrameworkVersion>

Directory.Build.targets

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</ItemGroup>
1515

1616
<Import Condition="'$(SampleProject)' != 'true'" Project="eng\Versions.targets" />
17-
<Import Condition="'$(SampleProject)' != 'true' and '$(IsTestProject)' != 'true'" Project="eng\BannedApis.targets" />
17+
<Import Condition="'$(SampleProject)' != 'true' and '$(MauiTestProject)' != 'true'" Project="eng\BannedApis.targets" />
1818
<Import Project="eng\AndroidX.targets" />
1919
<Import Project="eng\NuGetVersions.targets" />
2020

@@ -34,20 +34,14 @@
3434
<PropertyGroup Condition="'$(_MauiTargetPlatformIsiOS)' == 'True'">
3535
<SupportedOSPlatformVersion>13.0</SupportedOSPlatformVersion>
3636
<TargetPlatformMinVersion>13.0</TargetPlatformMinVersion>
37-
<!-- Workaround: https://github.com/dotnet/roslyn-analyzers/issues/6158 -->
38-
<NoWarn>$(NoWarn);CA1416</NoWarn>
3937
</PropertyGroup>
4038
<PropertyGroup Condition="'$(_MauiTargetPlatformIstvOS)' == 'True'">
4139
<SupportedOSPlatformVersion>10.0</SupportedOSPlatformVersion>
4240
<TargetPlatformMinVersion>10.0</TargetPlatformMinVersion>
43-
<!-- Workaround: https://github.com/dotnet/roslyn-analyzers/issues/6158 -->
44-
<NoWarn>$(NoWarn);CA1416</NoWarn>
4541
</PropertyGroup>
4642
<PropertyGroup Condition="'$(_MauiTargetPlatformIsMacCatalyst)' == 'True'">
4743
<SupportedOSPlatformVersion>15.0</SupportedOSPlatformVersion>
4844
<TargetPlatformMinVersion>15.0</TargetPlatformMinVersion>
49-
<!-- Workaround: https://github.com/dotnet/roslyn-analyzers/issues/6158 -->
50-
<NoWarn>$(NoWarn);CA1416</NoWarn>
5145
</PropertyGroup>
5246
<PropertyGroup Condition="'$(_MauiTargetPlatformIsmacOS)' == 'True'">
5347
<SupportedOSPlatformVersion>12.0</SupportedOSPlatformVersion>

Microsoft.Maui-vscode.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UITest.Analyzers", "src\Tes
212212
EndProject
213213
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.Embedding", "src\Controls\samples\Controls.Sample.Embedding\Maui.Controls.Sample.Embedding.csproj", "{4ADCBA87-30DB-44F5-85E9-94A4F4132FD9}"
214214
EndProject
215+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceGen.UnitTests", "src\Controls\tests\SourceGen.UnitTests\SourceGen.UnitTests.csproj", "{A426B2FC-F012-436B-BDD9-BEC0025DB96B}"
216+
EndProject
215217
Global
216218
GlobalSection(SolutionConfigurationPlatforms) = preSolution
217219
Debug|Any CPU = Debug|Any CPU
@@ -539,6 +541,10 @@ Global
539541
{4ADCBA87-30DB-44F5-85E9-94A4F4132FD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
540542
{4ADCBA87-30DB-44F5-85E9-94A4F4132FD9}.Release|Any CPU.Build.0 = Release|Any CPU
541543
{4ADCBA87-30DB-44F5-85E9-94A4F4132FD9}.Release|Any CPU.Deploy.0 = Release|Any CPU
544+
{A426B2FC-F012-436B-BDD9-BEC0025DB96B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
545+
{A426B2FC-F012-436B-BDD9-BEC0025DB96B}.Debug|Any CPU.Build.0 = Debug|Any CPU
546+
{A426B2FC-F012-436B-BDD9-BEC0025DB96B}.Release|Any CPU.ActiveCfg = Release|Any CPU
547+
{A426B2FC-F012-436B-BDD9-BEC0025DB96B}.Release|Any CPU.Build.0 = Release|Any CPU
542548
EndGlobalSection
543549
GlobalSection(SolutionProperties) = preSolution
544550
HideSolutionNode = FALSE
@@ -636,6 +642,7 @@ Global
636642
{0048EA9A-D751-4576-A2BB-2A37BFB385A5} = {25D0D27A-C5FE-443D-8B65-D6C987F4A80E}
637643
{DA001142-4777-4EDE-97D5-B1AC08162F99} = {7AC28763-9C68-4BF9-A1BA-25CBFFD2D15C}
638644
{4ADCBA87-30DB-44F5-85E9-94A4F4132FD9} = {E1082E26-D700-4127-9329-66D673FD2D55}
645+
{A426B2FC-F012-436B-BDD9-BEC0025DB96B} = {25D0D27A-C5FE-443D-8B65-D6C987F4A80E}
639646
EndGlobalSection
640647
GlobalSection(ExtensibilityGlobals) = postSolution
641648
SolutionGuid = {0B8ABEAD-D2B5-4370-A187-62B5ABE4EE50}

Microsoft.Maui.sln

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Console
187187
EndProject
188188
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Mac", "src\Graphics\samples\GraphicsTester.Skia.Mac\GraphicsTester.Skia.Mac.csproj", "{5E8D70F3-990D-4B40-8B13-AA818F21E8A0}"
189189
EndProject
190-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Tizen", "src\Graphics\samples\GraphicsTester.Skia.Tizen\GraphicsTester.Skia.Tizen.csproj", "{20756558-1284-42D6-AB7B-3E59DF8A6B34}"
191-
EndProject
192190
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.Skia.Windows", "src\Graphics\samples\GraphicsTester.Skia.Windows\GraphicsTester.Skia.Windows.csproj", "{8441FA70-9041-4727-91B9-2F39881CC0EE}"
193191
EndProject
194192
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GraphicsTester.WinUI.Desktop", "src\Graphics\samples\GraphicsTester.WinUI.Desktop\GraphicsTester.WinUI.Desktop.csproj", "{4BF0AF30-6E18-47D8-B90C-E99C1917BEF5}"
@@ -515,10 +513,6 @@ Global
515513
{5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
516514
{5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
517515
{5E8D70F3-990D-4B40-8B13-AA818F21E8A0}.Release|Any CPU.Build.0 = Release|Any CPU
518-
{20756558-1284-42D6-AB7B-3E59DF8A6B34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
519-
{20756558-1284-42D6-AB7B-3E59DF8A6B34}.Debug|Any CPU.Build.0 = Debug|Any CPU
520-
{20756558-1284-42D6-AB7B-3E59DF8A6B34}.Release|Any CPU.ActiveCfg = Release|Any CPU
521-
{20756558-1284-42D6-AB7B-3E59DF8A6B34}.Release|Any CPU.Build.0 = Release|Any CPU
522516
{8441FA70-9041-4727-91B9-2F39881CC0EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
523517
{8441FA70-9041-4727-91B9-2F39881CC0EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
524518
{8441FA70-9041-4727-91B9-2F39881CC0EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -726,7 +720,6 @@ Global
726720
{546614BB-07AA-4E8E-B6AE-EBDC183C4DAB} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE}
727721
{EF6ACA06-D4DF-4C21-9F65-FBFEC6325094} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE}
728722
{5E8D70F3-990D-4B40-8B13-AA818F21E8A0} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE}
729-
{20756558-1284-42D6-AB7B-3E59DF8A6B34} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE}
730723
{8441FA70-9041-4727-91B9-2F39881CC0EE} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE}
731724
{4BF0AF30-6E18-47D8-B90C-E99C1917BEF5} = {1BA0121E-0B83-4C8F-81BE-C293E7E35DCE}
732725
{AFD9D653-08C4-456C-AA1B-F5C9F621D655} = {42AB9AE1-631D-4AD4-85B7-910FF0940BDB}

0 commit comments

Comments
 (0)