Skip to content

chore: Update to net10 pre6#19934

Closed
jeromelaban wants to merge 52 commits intomasterfrom
dev/jela/ref-updates
Closed

chore: Update to net10 pre6#19934
jeromelaban wants to merge 52 commits intomasterfrom
dev/jela/ref-updates

Conversation

@jeromelaban
Copy link
Member

@jeromelaban jeromelaban commented Apr 14, 2025

@github-actions github-actions bot added platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/code-generation Categorizes an issue or PR as relevant to code generation area/build Categorizes an issue or PR as relevant to build infrastructure area/automation Categorizes an issue or PR as relevant to project automation platform/wpf 🪟 Categorizes an issue or PR as relevant to WPF kind/documentation area/sdk Categorizes an issue or PR as relevant to the Uno.Sdk labels Apr 14, 2025
@jeromelaban
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@unodevops
Copy link
Contributor

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

@jeromelaban
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@jeromelaban
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@jeromelaban jeromelaban force-pushed the dev/jela/ref-updates branch from c83904d to 8a10bf7 Compare May 14, 2025 03:07
@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

Context: e1197f9

The current idea to fix the step
**Tests - Desktop Skia Linux > Install .NET Workloads**
is to provision *.NET 9*, and use .NET 9 to execute the
`dotnet tool update …` command.  This *should* avoid the bug
mentioned in e1197f9…

Add a `build/ci/net9/global.json` file which requires use of the
.NET 9.0.300 SDK, and update the "Install .NET Workloads" step on
Linux to:

 1. Backup `global.json`
 2. Replace `global.json` with `build/ci/net9/global.json`
 3. Run the `dotnet tool update` command
 4. Restore the `global.json` from (1)
@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-19934/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-19934/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

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

jonpryor added a commit that referenced this pull request Jul 23, 2025
Context: #19934
Context: dotnet/sdk#48949
Context: dotnet/android@70bd636

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It currently *builds* (mostly), but it has *lots* of
unit test failures (over 3700).

Reviewing the diff between master@8e93e0d5 and
dev/jela/ref-updates@81c222f90c9704233ed2a8e0e8ee258dbda4c8e6
shows lots of changes which are apparently unrelated to getting Uno
building atop .NET 10.  Could some of those changes be responsible?

Test out this hypothesis by applying the .NET 10 changes to a
*new* branch + PR, which will allow us to see determine if *just*
building atop .NET 10 is the cause of the unit test failures.

To be clear, ".NET 10 changes" still constitutes *a lot* of changes.
Broadly speaking, they fall under:

  * `$(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 + IDE0055 warnings, which mostly
    involved adding blank lines between `namespace …` declarations
    and type declarations.

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

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

  * Workarounds for dotnet/sdk#48949, specifically altering
    `%(KnownFrameworkReference.*Version)` metadata so that the
    correct version of `Microsoft.WindowsDesktop.App.Ref` is found.

  * Workarounds for dotnet/android@70bd636b, which introduced a new
    `Microsoft.Android` namespace into `Mono.Android.dll`, which causes
    a CS0234 error when inside a `Microsoft.` namespace and C# code
    tries to use e.g. `Android.Views.View`.

  * Use .NET 9 to run `dotnet tool update` on Linux, to avoid:

        Unhandled exception: Command workload has more than one child named "--info"

    [This will hopefully be fixed in .NET 10 Preview 7][0].

[0]: https://discord.com/channels/732297728826277939/1267023991428612199/1397307201919652023
jonpryor added a commit that referenced this pull request Jul 23, 2025
Context: #19934
Context: dotnet/sdk#48949
Context: dotnet/android@70bd636

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It currently *builds* (mostly), but it has *lots* of
unit test failures (over 3700).

Reviewing the diff between master@8e93e0d5 and
dev/jela/ref-updates@81c222f90c9704233ed2a8e0e8ee258dbda4c8e6
shows lots of changes which are apparently unrelated to getting Uno
building atop .NET 10.  Could some of those changes be responsible?

Test out this hypothesis by applying the .NET 10 changes to a
*new* branch + PR, which will allow us to see determine if *just*
building atop .NET 10 is the cause of the unit test failures.

To be clear, ".NET 10 changes" still constitutes *a lot* of changes.
Broadly speaking, they fall under:

  * `$(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 + IDE0055 warnings, which mostly
    involved adding blank lines between `namespace …` declarations
    and type declarations.

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

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

  * Workarounds for dotnet/sdk#48949, specifically altering
    `%(KnownFrameworkReference.*Version)` metadata so that the
    correct version of `Microsoft.WindowsDesktop.App.Ref` is found.

  * Workarounds for dotnet/android@70bd636b, which introduced a new
    `Microsoft.Android` namespace into `Mono.Android.dll`, which causes
    a CS0234 error when inside a `Microsoft.` namespace and C# code
    tries to use e.g. `Android.Views.View`.

  * Use .NET 9 to run `dotnet tool update` on Linux, to avoid:

        Unhandled exception: Command workload has more than one child named "--info"

    [This will hopefully be fixed in .NET 10 Preview 7][0].

[0]: https://discord.com/channels/732297728826277939/1267023991428612199/1397307201919652023
jonpryor added a commit that referenced this pull request Jul 23, 2025
Context: #19934
Context: dotnet/sdk#48949
Context: dotnet/android@70bd636

#19934 was the first attempt to build unoplatform/uno
with .NET 10.  It currently *builds* (mostly), but it has *lots* of
unit test failures (over 3700).

Reviewing the diff between master@8e93e0d5 and
dev/jela/ref-updates@81c222f90c9704233ed2a8e0e8ee258dbda4c8e6
shows lots of changes which are apparently unrelated to getting Uno
building atop .NET 10.  Could some of those changes be responsible?

Test out this hypothesis by applying the .NET 10 changes to a
*new* branch + PR, which will allow us to see determine if *just*
building atop .NET 10 is the cause of the unit test failures.

To be clear, ".NET 10 changes" still constitutes *a lot* of changes.
Broadly speaking, they fall under:

  * `$(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 + IDE0055 warnings, which mostly
    involved adding blank lines between `namespace …` declarations
    and type declarations.

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

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

  * Workarounds for dotnet/sdk#48949, specifically altering
    `%(KnownFrameworkReference.*Version)` metadata so that the
    correct version of `Microsoft.WindowsDesktop.App.Ref` is found.

  * Workarounds for dotnet/android@70bd636b, which introduced a new
    `Microsoft.Android` namespace into `Mono.Android.dll`, which causes
    a CS0234 error when inside a `Microsoft.` namespace and C# code
    tries to use e.g. `Android.Views.View`.

  * Use .NET 9 to run `dotnet tool update` on Linux, to avoid:

        Unhandled exception: Command workload has more than one child named "--info"

    [This will hopefully be fixed in .NET 10 Preview 7][0].

[0]: https://discord.com/channels/732297728826277939/1267023991428612199/1397307201919652023
jonpryor added a commit that referenced this pull request Jul 25, 2025
Context: 5c30676
Context: #19934

The **Tests - Desktop Skia Windows > … > Using .NET 10.0 global.json**
and **Tests - Desktop Skia Linux > … > Using .NET 10 global.json**
steps are each failing, for the same reason:

	rm: cannot remove 'global.json': No such file or directory
	cp: cannot stat 'build/ci/net10/global.json': No such file or directory

The reason why this step is failing is twofold:

 1. Each of those jobs have `checkout: none`, i.e. they do not check
    out the `unoplatform/uno` repo, and

 2. They each run the `dotnet-install.yml` template, which in turn is
    trying to access files from the (nonexistent!) checkout.

This change was introduced in commit 5c30676, which in turn was
"cribbed" from #19934.

Is the inclusion of `dotnet-install.yml` necessary?

Remove it, and let's find out!
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*.
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*.
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*.
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 area/code-generation Categorizes an issue or PR as relevant to code generation area/sdk Categorizes an issue or PR as relevant to the Uno.Sdk area/skia ✏️ Categorizes an issue or PR as relevant to Skia kind/documentation platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/wpf 🪟 Categorizes an issue or PR as relevant to WPF

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants