Skip to content

chore: run Android-native tests on .NET 9, not .NET 8#21183

Merged
jeromelaban merged 20 commits intomasterfrom
dev/jonp/jonp-run-SamplesApp-android-on-net9
Aug 22, 2025
Merged

chore: run Android-native tests on .NET 9, not .NET 8#21183
jeromelaban merged 20 commits intomasterfrom
dev/jonp/jonp-run-SamplesApp-android-on-net9

Conversation

@jonpryor
Copy link
Contributor

Context: #21140
Context: https://dev.azure.com/uno-platform/Uno%20Platform/_build/results?buildId=172373&view=ms.vss-test-web.build-test-results-tab&runId=3427773&resultId=100090&paneView=debug

@jonpryor is starting to suspect that many of the Android-native unit test failures on #21140 -- which attempts to build Uno under .NET 10 -- are in fact caused by running the unit tests under .NET 9 instead of .NET 8.

Try to verify that assumption: update
.azure-devops-tests-android-native.yml so that it builds and runs the Android native SamplesApp against .NET 9 instead of .NET 8.

Does It Pass Tests?

GitHub Issue: closes #

PR Type:

What is the current behavior? 🤔

What is the new behavior? 🚀

PR Checklist ✅

Please check if your PR fulfills the following requirements:

Other information ℹ️

Context: #21140
Context: https://dev.azure.com/uno-platform/Uno%20Platform/_build/results?buildId=172373&view=ms.vss-test-web.build-test-results-tab&runId=3427773&resultId=100090&paneView=debug

@jonpryor is starting to suspect that many of the Android-native
unit test failures on #21140 -- which attempts to build Uno under
.NET 10 -- are in fact caused by running the unit tests under .NET 9
instead of .NET 8.

Try to verify that assumption: update
`.azure-devops-tests-android-native.yml` so that it builds and runs
the Android native `SamplesApp` against .NET 9 instead of .NET 8.

Does It Pass Tests?
@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@jonpryor
Copy link
Contributor Author

Try to verify that assumption: update .azure-devops-tests-android-native.yml so that it builds and runs the Android native SamplesApp against .NET 9 instead of .NET 8.

Assumption verified: many of the unit test failures I saw on #21140 are also present in this PR. It's not .NET 10 that causes e.g. Given_AppBarButton.Check_DataContext_Propagation() to fail; it's .NET 9:

  • All unit test failures

  • Given_AppBarButton.Check_DataContext_Propagation() failure

    Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.IsTrue failed.
    at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.ThrowAssertFailed(String assertionName, String message)
    at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.ThrowAssertIsTrueFailed(String message)
    at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(Boolean condition, String message, Object[] parameters)
    at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(Boolean condition)
    at Uno.UI.RuntimeTests.Tests.Windows_UI_Xaml_Controls.Given_AppBarButton.Check_DataContext_Propagation()
    at Uno.UI.Samples.Tests.UnitTestsControl.<>c__DisplayClass67_2.<<ExecuteTestsForInstance>g__InvokeTestMethod|5>d.MoveNext()
    

Additionally, wrt Given_AppBarButton.Check_DataContext_Propagation(), the issue appears to be around StyleHelper.UseNativeFrameNavigation(): if I remove this line:

using (StyleHelper.UseNativeFrameNavigation())

then the test passes under .NET 9.

Also notable is that many of the test failures are due to TimeoutExceptions, which I also first noticed in #19934 and #21140, e.g. When_Clipped_Rounded_Corners:

System.Exception : Error while performing WaitForElement(All().Marked("sampleControl"), "Timed out waiting for element...", 00:00:05, null, null)
----> System.TimeoutException : Timed out waiting for element...
TearDown : System.Exception : Error while performing Invoke("GetScreenshot", "0")
----> System.Net.Http.HttpRequestException : Connection refused (127.0.0.1:56417)
----> System.Net.Sockets.SocketException : Connection refused

   at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, String memberName)
   at Xamarin.UITest.Android.AndroidApp.WaitForElement(Func`2 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout)
   at Uno.UITest.Xamarin.XamarinApp.WaitForElement(Func`2 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout)
   at SamplesApp.UITests.SampleControlUITestBase.Run(String metadataName, Boolean waitForSampleControl, Boolean skipInitialScreenshot, Int32 sampleLoadTimeout) in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/SampleControlUITestBase.cs:line 472
   at SamplesApp.UITests.Windows_UI_Xaml.ClippingTests.ClippingTests_Tests.When_Clipped_Rounded_Corners() in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/Windows_UI_Xaml/ClippingTests/ClippingTests_Tests.cs:line 44
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
--TimeoutException
   at Xamarin.UITest.Shared.WaitForHelper.WaitForAny[T](Func`1 query, String timeoutMessage, Nullable`1 timeout, Nullable`1 retryFrequency, Nullable`1 postTimeout)
   at Xamarin.UITest.Android.AndroidApp.<>c__DisplayClass80_0.<WaitForElement>b__0()
   at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, String memberName)
--TearDown
   at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, String memberName)
   at Xamarin.UITest.Android.AndroidApp.Invoke(String methodName, Object argument)
   at Uno.UITest.Xamarin.XamarinApp.Invoke(String methodName, Object argument)
   at Uno.UITest.Helpers.BackdoorInvocationHelper.InvokeGeneric(IApp app, String methodName, Object arg1)
   at SamplesApp.UITests.Extensions.AppExtensions.GetInAppScreenshot(IApp app) in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/Extensions/AppExtensions.cs:line 61
   at SamplesApp.UITests.SampleControlUITestBase.GetNativeScreenshot(String title) in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/SampleControlUITestBase.cs:line 347
   at SamplesApp.UITests.SampleControlUITestBase.TakeScreenshot(String stepName, ScreenshotOptions options) in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/SampleControlUITestBase.cs:line 307
   at SamplesApp.UITests.SampleControlUITestBase.TakeScreenshot(String stepName, Nullable`1 ignoreInSnapshotCompare) in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/SampleControlUITestBase.cs:line 288
   at SamplesApp.UITests.SampleControlUITestBase.AfterEachTest() in /agent/_work/1/s/src/SamplesApp/SamplesApp.UITests/SampleControlUITestBase.cs:line 234
   at InvokeStub_SampleControlUITestBase.AfterEachTest(Object, Object, IntPtr*)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
--HttpRequestException
   at Xamarin.UITest.Shared.Http.HttpClient.SendData(String endpoint, String method, HttpContent content, ExceptionPolicy exceptionPolicy, Nullable`1 timeOut)
   at Xamarin.UITest.Shared.Http.HttpClient.Post(String endpoint, Object arguments, ExceptionPolicy exceptionPolicy, Nullable`1 timeOut)
   at Xamarin.UITest.Android.AndroidGestures.Invoke(String methodName, Object[] arguments)
   at Xamarin.UITest.Android.AndroidApp.<>c__DisplayClass88_0.<Invoke>b__0()
   at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, String memberName)
--SocketException
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cance

@jonpryor
Copy link
Contributor Author

It should also be noted that #21171 is of a similar theme: building and running various tests fails under .NET 9.

@unodevops
Copy link
Contributor

⚠️⚠️ The build 172495 has failed on Uno.UI - CI.

@Youssef1313
Copy link
Member

Failures might be related to microsoft/appcenter#723 ?

jonpryor added a commit that referenced this pull request Aug 13, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 warnings due to
    nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 now requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 13, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 now requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 14, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 now requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 14, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Update `SamplesApp.UITests.csproj` to explicitly use
    Microsoft.NET.Test.Sdk 17.14.1, to "override" the nearly four
    year old Microsoft.NET.Test.Sdk 17.0.0 reference implicitly
    brought in from Uno.UITest.Helpers/1.1.0-dev.70.

    This hopefully fixes a `MissingMethodException` for
    `IFileSystem.Exists(string)` seen on CI:

        Unhandled exception. System.MissingMethodException: Method not found: 'Boolean Microsoft.Testing.Platform.Helpers.IFileSystem.Exists(System.String)'.
           at Microsoft.Testing.Extensions.VSTestBridge.Configurations.RunSettingsConfigurationProvider.BuildAsync(CommandLineParseResult commandLineParseResult)
           at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
           at Microsoft.Testing.Extensions.VSTestBridge.Configurations.RunSettingsConfigurationProvider.BuildAsync(CommandLineParseResult commandLineParseResult)
           at Microsoft.Testing.Platform.Configurations.ConfigurationManager.BuildAsync(IFileLoggerProvider syncFileLoggerProvider, CommandLineParseResult commandLineParseResult) in /_/src/Platform/Microsoft.Testing.Platform/Configurations/ConfigurationManager.cs:line 37
           at Microsoft.Testing.Platform.Hosts.TestHostBuilder.BuildAsync(ApplicationLoggingState loggingState, TestApplicationOptions testApplicationOptions, IUnhandledExceptionsHandler unhandledExceptionsHandler, DateTimeOffset createBuilderStart) in /_/src/Platform/Microsoft.Testing.Platform/Hosts/TestHostBuilder.cs:line 131
           at Microsoft.Testing.Platform.Builder.TestApplicationBuilder.BuildAsync() in /_/src/Platform/Microsoft.Testing.Platform/Builder/TestApplicationBuilder.cs:line 112
           at TestingPlatformEntryPoint.Main(String[] args) in /__w/1/s/src/SamplesApp/SamplesApp.UITests/obj/Release/net9.0/TestPlatformEntryPoint.cs:line 14
           at TestingPlatformEntryPoint.<Main>(String[] args)

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 14, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    This can make it annoyingly difficult to `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 14, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    This can make it annoyingly difficult to `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 15, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 15, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 15, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
@github-actions github-actions bot added the area/automation Categorizes an issue or PR as relevant to project automation label Aug 15, 2025
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 173828 has failed on Uno.UI - CI.

@github-actions github-actions bot added area/build Categorizes an issue or PR as relevant to build infrastructure and removed area/automation Categorizes an issue or PR as relevant to project automation labels Aug 18, 2025
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

jonpryor added a commit that referenced this pull request Aug 18, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@github-actions github-actions bot removed the area/automation Categorizes an issue or PR as relevant to project automation label Aug 22, 2025
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 174294 has failed on Uno.UI - CI.

@github-actions github-actions bot added the area/automation Categorizes an issue or PR as relevant to project automation label Aug 22, 2025
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 174310 has failed on Uno.UI - CI.

@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21183/docs/index.html

@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21183/wasm-skia-net9/index.html

@jeromelaban jeromelaban marked this pull request as ready for review August 22, 2025 18:29
Copilot AI review requested due to automatic review settings August 22, 2025 18:29
@jeromelaban jeromelaban enabled auto-merge August 22, 2025 18:29
Copy link
Contributor

Copilot AI left a 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 updates the Android native test pipeline to run against .NET 9 instead of .NET 8, as part of an effort to verify if test failures in the .NET 10 migration are related to runtime version mismatches. The change updates build configurations, test infrastructure, and adds platform-specific test exclusions.

  • Updates Android native CI pipeline to build and test against .NET 9 framework
  • Adds platform exclusions for failing tests on Android native platform
  • Updates Android build tools and adds workarounds for UI test compatibility

Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
build/ci/tests/.azure-devops-tests-android-native.yml Updates target framework from net8.0-android to net9.0-android and related paths
build/test-scripts/android-uitest-run.sh Updates Android build tools version and adds Xamarin.UITest compatibility workaround
src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_AppBarButton.cs Excludes test from Android native due to known issue
src/Uno.UI.RuntimeTests/IntegrationTests/dxaml/controls/commandbar/CommandBarIntegrationTests.cs Extends test exclusion from iOS to include Android
src/SamplesApp/SamplesApp.UITests/Windows_UI_Xaml_Controls/ComboBoxTests/ComboxBox_DropDownPlacement.cs Adds Android-specific test skip with detailed failure analysis
src/SamplesApp/SamplesApp.UITests/SampleControlUITestBase.cs Improves error handling for cold start timeout exceptions

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@nventive-devops
Copy link
Contributor

The build 174325 found UI Test snapshots differences: android-28-net8: 23, android-28-net8-Snap: 52, ios: 5, ios-Snap: 61, skia-linux-screenshots: 74, skia-windows-screenshots: 80, wasm: 46, wasm-automated-net9.0-WinUI-Benchmarks-automated: 0, wasm-automated-net9.0-WinUI-Default-automated: 16, wasm-automated-net9.0-WinUI-RuntimeTests-0: 0, wasm-automated-net9.0-WinUI-RuntimeTests-1: 1, wasm-automated-net9.0-WinUI-RuntimeTests-2: 1, android-28-net9: 0, android-28-net9-Snap: 0

Details
  • android-28-net8: 23 changed over 825

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Detereminate_ProgressRing_Validation50_[#FF0000_#008000_#008000_#FF0000]_Progress-Ring-Value-50
    • Detereminate_ProgressRing_Validation75_[#FF0000_#008000_#008000_#008000]_Progress-Ring-Value-75
    • SelectionTest_UITests_Microsoft_UI_Xaml_Controls_RadioButtonsTests_RadioButtonsPage
    • When_Clipped_Rounded_Corners_UITests_Windows_UI_Xaml_Clipping_Clipping4273
    • When_Parent_PointerMoved_After_drag_on_non-scrolling_ScrollViewer
    • When_Parent_PointerMoved_After_drag_on_ScrollViewer_-_touch
    • When_Clip_Is_Set_On_Child_Element_UITests_Windows_UI_Xaml_UIElementTests_UIElement_Clipping
    • When_SingleSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • Button_NestedButtons_Validation_nVentive_Umbrella_Views_UI_Samples_Content_UITests_ButtonTestsControl_Nested_Buttons
    • DecimalFormatterTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • UpDownEnabledTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • UpDownTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • When_NoSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_NoSelection_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • CommandBar_LongTitle_Validation_CommandBar_-_LongTitle_-_4_-_Orientation_Landscape
    • Focus_Programmatic_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Focus_Programmatic
    • Detereminate_ProgressRing_Validation0_[#FF0000_#FF0000_#FF0000_#FF0000]_UITests_Microsoft_UI_Xaml_Controls_ProgressRing_WinUIDeterminateProgressRing
    • ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • ProgressRing_IsEnabled_Running_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • SelectionOnLoad_UITests_Microsoft_UI_Xaml_Controls_RadioButtonsTests_RadioButtonsInitialLoadSelected
  • android-28-net8-Snap: 52 changed over 1074

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • TextBlock_TextBlock_TextWrapping_PR1954_EdgeCase_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_TextWrapping_PR1954_EdgeCase
    • TextBlock_TextBlock_Visibility_Arrange_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Visibility_Arrange
    • TextBlock_TextBoxSizeChanging_Uno_UI_Samples_Content_UITests_TextBlockControl_TextBoxSizeChanging
    • TextBlock_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_Foreground_Brushes_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_Foreground_Brushes
    • TextBlock_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Decorations_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Decorations
    • TextBox_Input_InputScope_Email_Uno_UI_Samples_Content_UITests_TextBoxControl_Input_InputScope_Email
    • TextBox_Input_InputScope_PersonalFullName_Uno_UI_Samples_Content_UITests_TextBoxControl_Input_InputScope_PersonalFullName
    • CommandBarFlyout_MUXControlsTestApp_CommandBarFlyoutPage_MUXControlsTestApp_CommandBarFlyoutPage
    • TextBlock_TextBlock_Style_Inheritance_Uno_UI_Samples_Content_UITests_TextBlockControl_TextBlock_Style_Inheritance
    • RatingControl_UITests_Microsoft_UI_Xaml_Controls_RatingControlTests_RatingControlPage_UITests_Microsoft_UI_Xaml_Controls_RatingControlTests_RatingControlPage
    • TextBlock_TextBlock_FontWeight_Uno_UI_Samples_Content_UITests_TextBlockControl_TextBlock_FontWeight
    • MUX_NumberBox_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • Shapes_LinePage_SamplesApp_Windows_UI_Xaml_Shapes_LinePage
    • Shapes_Measure_UITests_Shared_Windows_UI_Xaml_Shapes_MeasurePage
    • TeachingTip_UITests_Microsoft_UI_Xaml_Controls_TeachingTipTests_TeachingTipPage_UITests_Microsoft_UI_Xaml_Controls_TeachingTipTests_TeachingTipPage
    • TextBox_TextBox_DefaultTextBoxStyle_Uno_UI_Samples_Content_UITests_TextBoxControl_TextBox_DefaultTextBoxStyle
    • Gesture_Recognizer_Pointer_Events_test_bench_UITests_Shared_Windows_UI_Input_GestureRecognizer_PointersEvents
    • SwipeControl_UITests_Windows_UI_Xaml_Controls_SwipeControlTests_SwipeControl_ListView_ItemClick_UITests_Windows_UI_Xaml_Controls_SwipeControlTests_SwipeControl_ListView_ItemClick
    • SwipeControl_UITests_Windows_UI_Xaml_Controls_SwipeControlTests_SwipeControl_ScrollViewer_UITests_Windows_UI_Xaml_Controls_SwipeControlTests_SwipeControl_ScrollViewer
    • Pickers_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarView_Theming_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarView_Theming
  • ios: 5 changed over 255

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ProgressRing_IsEnabled_Running_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • Check_ListView_Swallows_Measure_UITests_Shared_Windows_UI_Xaml_Controls_ListView_ListView_With_ListViews_Count_Measure
    • ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • TextBox_UpdatedBinding_On_OneWay_Mode_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Bindings
    • SequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPage
  • ios-Snap: 61 changed over 991

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Brushes_UITests_Windows_UI_Xaml_Media_BrushesTests_RevealBrush_Fallback_UITests_Windows_UI_Xaml_Media_BrushesTests_RevealBrush_Fallback
    • Default_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected
    • Default_Uno_UI_Samples_Content_UITests_WebView_WebView_AnchorNavigation_Uno_UI_Samples_Content_UITests_WebView_WebView_AnchorNavigation
    • Microsoft_UI_Composition_UITests_Shared_Windows_UI_Composition_SKCanvasElement_Simple_UITests_Shared_Windows_UI_Composition_SKCanvasElement_Simple
    • Microsoft_UI_Composition_UITests_Windows_UI_Composition_InteractionTrackerAndExpressionAnimationSample_UITests_Windows_UI_Composition_InteractionTrackerAndExpressionAnimationSample
    • Microsoft_UI_Composition_UITests_Windows_UI_Composition_MixTransformCliPropertyAndClippedByParentWithBorders_Then_RenderingIsValid_UITests_Windows_UI_Composition_MixTransformCliPropertyAndClippedByParentWithBorders_Then_RenderingIsValid
    • Brushes_ImageBrushChangingCornerRadius_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushChangingCornerRadius
    • Image_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Bigger_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Bigger
    • Image_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Equal_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Equal
    • Image_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Smaller_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Smaller
    • Image_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Taller_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Taller
    • Pickers_TimePicker_TimePickerFlyoutStyle_UITests_Windows_UI_Xaml_Controls_TimePicker_TimePicker_TimePickerFlyoutStyle
    • SwipeControl_MUXControlsTestApp_SwipeControlPage2_MUXControlsTestApp_SwipeControlPage2
    • ContentControl_ContentControl_Nested_TemplatedParent_Uno_UI_Samples_Content_UITests_ContentControlTestsControl_ContentControl_Nested_TemplatedParent
    • Icons_UITests_Microsoft_UI_Xaml_Controls_ImageIconTests_ImageIconPage_UITests_Microsoft_UI_Xaml_Controls_ImageIconTests_ImageIconPage
    • Icons_UITests_Shared_Windows_UI_Xaml_Controls_BitmapIconTests_BitmapIcon_Foreground_UITests_Shared_Windows_UI_Xaml_Controls_BitmapIconTests_BitmapIcon_Foreground
    • Popup_MessageDialog_UITests_Shared_Windows_UI_Xaml_Controls_Popup_MessageDialog
    • Brushes_EllipsemaskingEllipseGrid_Uno_UI_Samples_UITests_ImageBrushTestControl_EllipsemaskingEllipseGrid
    • Brushes_ImageBrushWithScaleTransform_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushWithScaleTransform
    • MediaPlayerElement_Using_3gp_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_3gp_Extension
  • skia-linux-screenshots: 74 changed over 2284

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Buttons.png
    • DropDownButtonPage.png-dark
    • DropDownButtonPage.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Focus_FocusVisual_Properties.png-dark
    • Focus_FocusVisual_Properties.png
    • Buttons.png-dark
    • CalendarView_Theming.png-dark
    • DoubleImageBrushInList.png-dark
    • DoubleImageBrushInList.png
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Image_Margin_Large.png-dark
    • Image_Margin_Large.png
    • ButtonClippingTestsControl.png-dark
    • ImageIconPage.png-dark
    • ImageIconPage.png
  • skia-windows-screenshots: 80 changed over 2284

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Buttons.png-dark
    • Buttons.png
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • ButtonClippingTestsControl.png-dark
    • DoubleImageBrushInList.png-dark
    • DoubleImageBrushInList.png
    • Focus_FocusVisual_Properties.png-dark
    • CalendarView_Theming.png-dark
    • ClipboardTests.png
    • ImageBrushInList.png-dark
    • ImageBrushInList.png
    • ButtonClippingTestsControl.png
    • ClipboardTests.png-dark
    • DisplayInformation.png-dark
    • ImageWithNoSpecificSize.png-dark
    • ImageWithNoSpecificSize.png
    • ImageWithLateSource.png-dark
    • ImageWithLateSource.png
  • wasm: 46 changed over 1056

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ComboBox.ComboBox_IsSelected
    • UITests.Shared.Windows_UI_Xaml_Controls.Button.Button_Events
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Minimal
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_Extension
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListView_Padding_Unconstrained
    • Uno.UI.Samples.Content.UITests.CommandBar.CommandBar_Padding
    • UITests.Shared.Windows_UI_Xaml_Controls.ContentDialogTests.ContentDialog_Closing
    • UITests.Shared.Windows_UI_Xaml_Controls.ContentDialogTests.ContentDialog_Simple
    • UITests.Windows_UI_Xaml_Controls.ImageTests.SvgImageSource_FromMsAppData
    • UITests.Windows_UI_Xaml.DragAndDrop.DragDrop_TestPage
    • UITests.Windows_UI_Xaml_Controls.Repeater.ItemsRepeater_Nested
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ComboBox.ComboBox_Corners
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ListView.ListView_IsSelected
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewLegacy
    • UITests.Windows_UI_Xaml_Input.Keyboard.Keyboard_Events
    • UITests.Windows_UI_Xaml_Media.AcrylicBrushTests.BasicAcrylicBrushTest
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewSelectedItems
    • UITests.Shared.Windows_UI_Xaml_Controls.ComboBox.ComboBox_SelectedIndex
    • UITests.Shared.Windows_UI_Xaml_Controls.ComboBox.ComboBox_VisibleBounds
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewHeaderFooter_ImplicitlyBinded
  • wasm-automated-net9.0-WinUI-Benchmarks-automated: 0 changed over 1

  • wasm-automated-net9.0-WinUI-Default-automated: 16 changed over 877

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Default_StrokeThickness_MyEllipse
    • Default_StrokeThickness_MyPolyline
    • ListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItems
    • When_NoSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_SingleSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_MultipleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_SingleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • SequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPage
    • ToggleCollapsedStateToVerifyClipping_UITests_Shared_Microsoft_UI_Xaml_Controls_ExpanderTests_ExpanderColorValidationPage
    • Default_StrokeThickness_MyLine
    • Default_StrokeThickness_MyRect
    • TestProgressRing_InitialState_UITests_Microsoft_UI_Xaml_Controls_ProgressRing_WinUIProgressRing_Features
    • Default_StrokeThickness_MyPolygon
    • Default_StrokeThickness_MyPath
    • When_TransformToVisual_ScrollViewer_UITests_Shared_Windows_UI_Xaml_UIElementTests_TransformToVisual_ScrollViewer
    • When_ExtendedSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
  • wasm-automated-net9.0-WinUI-RuntimeTests-0: 0 changed over 1

  • wasm-automated-net9.0-WinUI-RuntimeTests-1: 1 changed over 1

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • RunRuntimeTests_SamplesApp_Samples_UnitTests_UnitTestsPage
  • wasm-automated-net9.0-WinUI-RuntimeTests-2: 1 changed over 1

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • RunRuntimeTests_SamplesApp_Samples_UnitTests_UnitTestsPage
  • android-28-net9: 0 changed over 825

  • android-28-net9-Snap: 0 changed over 1074

@jeromelaban jeromelaban merged commit 250e098 into master Aug 22, 2025
92 checks passed
@jeromelaban jeromelaban deleted the dev/jonp/jonp-run-SamplesApp-android-on-net9 branch August 22, 2025 21:16
jonpryor added a commit that referenced this pull request Aug 25, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 25, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jonpryor added a commit that referenced this pull request Aug 26, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
jeromelaban pushed a commit that referenced this pull request Aug 27, 2025
Context: #19934
Context: #21140
Context: dotnet/sdk#48949

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It *built* (mostly), but it had *lots* of unit test
failures (over 3700) that were not understood at the time.

#21140 was an attempt to cleanup & simplify #19934.
It partially succeeded, but required additional reconsideration for
a cleaner and more understandable merge.

(Later, PR #21183 helped explain many of the unit test failures that
PR #19934 observed: Xamarin.UITest doesn't work reliably under
.NET 9! See microsoft/appcenter#2646 and microsoft/appcenter#327!)

Some of the contents of #19934 and #21140 have been split out into
separately merged PRs such as #21230 (CS0246 fixes)
and #21199 (remove `[Export]` in some scenarios).

Squash existing "known good" and related changes:

  * doc updates

  * Bumping target framework versions,

  * Use uno.check 1.32.0-dev.45, which knows about .NET 10 Preview 7.

  * `$(TreatWarningsAsErrors)`=true +
    NuGet warnings.  For example:

        error NU1510: Warning As Error:
        PackageReference System.Private.Uri will not be pruned.
        Consider removing this package from your dependencies, as it is likely unnecessary.

  * `$(TreatWarningsAsErrors)`=true + CS8604 or CS0809 warnings due
    to nullability changes, particularly in iOS.

  * `$(TreatWarningsAsErrors)`=true + IL2\* warnings, some of which
    @jonpryor was able to fix in a reasonable timeframe, and some of
    which was thrown into `$(NoWarn)` to deal with later.

  * Remove hardcoded `$(TargetFramework)`=net8.0 from
    `Uno.UI.RemoteControl.TestProcessor.csproj`, so that it builds,
    and remove other uses of `net8.0` from everywhere other than
    `src/SolutionTemplate`.

  * Provide `%(PackageReference.Version)` for packages that were
    producing NU1015 errors, specifically `Uno.Fonts.OpenSans`.

  * Remove `@(PackageReference)` values which produced NU1510
    warnings such as:

        warning NU1510: PackageReference Microsoft.Win32.Registry will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.

  * Improve `dotnet-install.yml` use, as some CI environments *don't*
    have a `unoplatform/uno` checkout, and thus *cannot* copy files
    such as `build/ci/net10/global.json`.

  * Improve `local-android-uitest-run.sh` for local macOS use:
    Export and use `$ANDROID_AVD_HOME`, so that we have a "known"
    location for whare Emulator images are created.  (Not sure what's
    wrong with my environment, but they are not reliably created or
    loaded from `$HOME/.android/avd`.)

    Also update so that it doesn't require running the script from the
    `build/test-scripts` directory.  You can now run it from topdir:

        UITEST_IS_LOCAL=true \
          build/test-scripts/local-android-uitest-run.sh

  * Provision OpenJDK-17, as .NET 9 requires it.

  * Use Xcode 16.4, as .NET 10 iOS now requires it.

  * Add new `$(NetPreviousNetCoreApple)` MSBuild property to
    `Directory.Build.props`, which contains target frameworks for
    $(NetPrevios) Apple platforms.

    Update `Uno.UI.Runtime.Skia.AppleUIKit.csproj` to use
    `$(NetPreviousNetCoreApple)`, and update `skia-ios-uitest-build.sh`
    to provide a "complete" target framework version.

    This is so that target frameworks are consistent:
    `net9.0-ios` *floats*; circa a year ago, it aliased
    `net9.0-ios18.0`, and *today* it aliases `net9.0-ios18.5`.
    "Even better", this doesn't "flow" to the C# compiler:
    `net9.0-ios` sets `IOS18_0_OR_GREATER` *but not*
    `IOS18_5_OR_GREATER` *even when* the 18.5 assemblies are used!
    This can make it annoyingly difficult to get `[Obsolete]`s
    consistent across separate project builds.

TODO, for future commits to this PR:

  * Xamarin.AndroidX package version bumps from #21205.
    We felt that these shouldn't be separately merged, as some of
    version bumps are quite significant and should instead only be
    used with .NET 10.

  * A new understanding of `src/SolutionTemplate`: the intent, as
    @jonpryor currently understands it, is that tests within
    `src/SolutionTemplate` are "frozen in time"; `$(TargetFrameworks)`
    should *not* be updated, etc.

    Which means that when we drop support for an older version of .NET,
    we should in turn *remove the old tests*.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/automation Categorizes an issue or PR as relevant to project automation area/build Categorizes an issue or PR as relevant to build infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants