Update container packages to 10.0.94-pre

This commit is contained in:
Dan Siegel
2026-10-07 17:30:12 -07:00
parent 17dd42479c
commit 020d28c9d1
5 changed files with 32 additions and 39 deletions
+6 -3
View File
@@ -1,9 +1,12 @@
<Project> <Project>
<PropertyGroup>
<PrismNativeAotContainerVersion Condition="'$(PrismNativeAotContainerVersion)' == ''">10.0.94-pre</PrismNativeAotContainerVersion>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageVersion Include="PolySharp" Version="1.15.0" /> <PackageVersion Include="PolySharp" Version="1.15.0" />
<PackageVersion Include="Prism.Container.Abstractions" Version="10.0.82-pre" /> <PackageVersion Include="Prism.Container.Abstractions" Version="10.0.94-pre" />
<PackageVersion Include="Prism.Container.DryIoc" Version="10.0.82-pre" /> <PackageVersion Include="Prism.Container.DryIoc" Version="10.0.94-pre" />
<PackageVersion Include="Prism.Container.Unity" Version="10.0.82-pre" /> <PackageVersion Include="Prism.Container.Unity" Version="10.0.94-pre" />
<PackageVersion Include="System.ValueTuple" Version="4.5.0" /> <PackageVersion Include="System.ValueTuple" Version="4.5.0" />
<PackageVersion Include="System.Reactive" Version="6.0.1" /> <PackageVersion Include="System.Reactive" Version="6.0.1" />
<PackageVersion Include="Xamarin.Forms" Version="5.0.0.2401" /> <PackageVersion Include="Xamarin.Forms" Version="5.0.0.2401" />
+13 -19
View File
@@ -29,28 +29,20 @@ project maps this opt-in to `PublishAot=true` and `UseInterpreter=false`. Do not
pass `PublishAot` globally: that also reaches referenced libraries. pass `PublishAot` globally: that also reaches referenced libraries.
The opt-in does not set `PublishAot` on libraries. Ordinary sample builds keep The opt-in does not set `PublishAot` on libraries. Ordinary sample builds keep
DryIoc. Validation builds select the real `Prism.Container.Microsoft` adapter; DryIoc. Validation builds select the real `Prism.Container.Microsoft` adapter;
`PrismNativeAotContainerVersion` is mandatory and has no guessed default. Central the central package configuration pins Containers **10.0.94-pre**, including
package configuration uses this same version for Abstractions in referenced Abstractions and its shared generator in referenced source libraries.
source libraries, so they receive the updated shared generator. Restore from a configured Prism package feed that contains this published version.
No version override or local container build is needed for this baseline.
`PrismNativeAotContainerVersion` remains available for deliberate matching local
Microsoft/Abstractions package builds; see the optional instructions below.
Do not use stand-in containers or copy implementation types into the demo.
Prepare matching **real** Microsoft and Abstractions packages from the For a supported iOS device toolchain, publish the existing app from the repo root:
`ds/native-aot-binding-preservation` branch of `PrismLibrary/Prism.Containers`.
Pack both existing projects into a local NuGet feed under one deliberate local
prerelease version; Abstractions must contain its shared generator/analyzer.
Alternatively use the exact matching packages from an authorized private feed.
Do not publish new package versions for this validation. Restore the app and all
its source dependencies against that feed. Do not use stand-in containers or
copy implementation types into the demo. Package/framework compatibility and
feed access must be resolved before treating the native lane as runnable.
For a supported iOS device toolchain, publish the existing app from the repo root
with the exact version you packed (replace the placeholder):
```sh ```sh
dotnet publish e2e/Maui/PrismMauiDemo/PrismMauiDemo.csproj \ dotnet publish e2e/Maui/PrismMauiDemo/PrismMauiDemo.csproj \
-c Release -f net10.0-ios -r ios-arm64 \ -c Release -f net10.0-ios -r ios-arm64 \
-p:PrismNativeAotValidation=true \ -p:PrismNativeAotValidation=true
-p:PrismNativeAotContainerVersion=YOUR_MATCHING_LOCAL_VERSION
``` ```
The [MAUI NativeAOT requirements](https://learn.microsoft.com/en-us/dotnet/maui/deployment/nativeaot?view=net-maui-10.0) The [MAUI NativeAOT requirements](https://learn.microsoft.com/en-us/dotnet/maui/deployment/nativeaot?view=net-maui-10.0)
@@ -73,14 +65,16 @@ No mobile CI jobs or workflow changes are part of this local validation work.
## Build the real local container packages ## Build the real local container packages
Optional: only needed when testing further unpublished container changes.
Use a full checkout of `PrismLibrary/Prism.Containers` on Use a full checkout of `PrismLibrary/Prism.Containers` on
`ds/native-aot-binding-preservation`, with the SDKs required by that checkout's the intended source commit (the published baseline is merge `f3e51fbb`), with the SDKs required by that checkout's
normal supported target frameworks. Do not manufacture netstandard targets or normal supported target frameworks. Do not manufacture netstandard targets or
replace the container with a shim. From that checkout, choose one local-only replace the container with a shim. From that checkout, choose one local-only
prerelease version for both existing projects: prerelease version for both existing projects:
```sh ```sh
export PRISM_CONTAINER_VERSION=10.0.83-bindingfixlocal2 export PRISM_CONTAINER_VERSION=10.0.95-bindingfixlocal
export PRISM_CONTAINER_FEED="$HOME/prism-native-aot-packages" export PRISM_CONTAINER_FEED="$HOME/prism-native-aot-packages"
dotnet pack src/Prism.Container.Abstractions/Prism.Container.Abstractions.csproj \ dotnet pack src/Prism.Container.Abstractions/Prism.Container.Abstractions.csproj \
-c Release -p:DISABLE_GITVERSIONING=true \ -c Release -p:DISABLE_GITVERSIONING=true \
+1 -1
View File
@@ -77,7 +77,7 @@
<Target Name="ValidateNativeAotConfiguration" BeforeTargets="CollectPackageReferences;PrepareForBuild" <Target Name="ValidateNativeAotConfiguration" BeforeTargets="CollectPackageReferences;PrepareForBuild"
Condition="'$(PrismNativeAotValidation)' == 'true'"> Condition="'$(PrismNativeAotValidation)' == 'true'">
<Error Condition="'$(PrismNativeAotContainerVersion)' == ''" <Error Condition="'$(PrismNativeAotContainerVersion)' == ''"
Text="NativeAOT validation requires PrismNativeAotContainerVersion from matching real Prism.Container.Microsoft and Prism.Container.Abstractions local/private packages. See the app's NativeAOT validation instructions; no package version is assumed." /> Text="NativeAOT validation requires matching real Prism.Container.Microsoft and Prism.Container.Abstractions packages. Use the centrally pinned version or set PrismNativeAotContainerVersion to an explicit local build." />
</Target> </Target>
<Target Name="ValidateNativeAotBuild" BeforeTargets="PrepareForBuild" <Target Name="ValidateNativeAotBuild" BeforeTargets="PrepareForBuild"
+1 -1
View File
@@ -60,7 +60,7 @@
<Target Name="ValidateNativeAotConfiguration" BeforeTargets="CollectPackageReferences;PrepareForBuild" <Target Name="ValidateNativeAotConfiguration" BeforeTargets="CollectPackageReferences;PrepareForBuild"
Condition="'$(PrismNativeAotValidation)' == 'true'"> Condition="'$(PrismNativeAotValidation)' == 'true'">
<Error Condition="'$(PrismNativeAotContainerVersion)' == ''" <Error Condition="'$(PrismNativeAotContainerVersion)' == ''"
Text="NativeAOT validation requires PrismNativeAotContainerVersion from matching real Prism.Container.Microsoft and Prism.Container.Abstractions local/private packages. See the app's NativeAOT validation instructions; no package version is assumed." /> Text="NativeAOT validation requires matching real Prism.Container.Microsoft and Prism.Container.Abstractions packages. Use the centrally pinned version or set PrismNativeAotContainerVersion to an explicit local build." />
</Target> </Target>
<Target Name="ValidateNativeAotBuild" BeforeTargets="PrepareForBuild" <Target Name="ValidateNativeAotBuild" BeforeTargets="PrepareForBuild"
+11 -15
View File
@@ -57,29 +57,25 @@ an independent INPC model base with inherited title/visibility properties.
Validation selects the actual `Prism.Container.Microsoft` adapter via Validation selects the actual `Prism.Container.Microsoft` adapter via
`CreateContainerExtension` on the container-neutral `PrismApplicationBase`. The `CreateContainerExtension` on the container-neutral `PrismApplicationBase`. The
validation build references Prism.Uno directly and does not reference the DryIoc validation build references Prism.Uno directly and does not reference the DryIoc
adapter. Supply the required `PrismNativeAotContainerVersion` adapter. Central package configuration pins Microsoft and Abstractions, including
from matching real Microsoft and Abstractions local/private packages; no default its shared analyzer in referenced source libraries, to published **10.0.94-pre**.
version is assumed. The same version supplies Abstractions and its shared Restore from a configured Prism package feed containing this version. No version
analyzer to the referenced source libraries. Pack the two existing container override or local container build is needed for this baseline. The optional
projects from `PrismLibrary/Prism.Containers` branch `PrismNativeAotContainerVersion` property selects matching real local packages
`ds/native-aot-binding-preservation` into a local feed with one intentional local when testing further unpublished container changes. Do not substitute a container
prerelease version, then restore this app and its dependencies from that feed. shim. Resolve package/framework compatibility before native publishing. Do
Do not publish packages or substitute a container shim. Resolve package/framework
compatibility before native publishing. Do
not pass `PublishAot` globally, since that propagates to referenced libraries. NativeAOT qualification requires a supported SDK/platform/RID and a not pass `PublishAot` globally, since that propagates to referenced libraries. NativeAOT qualification requires a supported SDK/platform/RID and a
verified NativeAOT-compatible real container configuration, followed by a local verified NativeAOT-compatible real container configuration, followed by a local
publish and device run. Record exact versions and every trimming/AOT warning. publish and device run. Record exact versions and every trimming/AOT warning.
Cloud source/XML checks are not a NativeAOT or device pass. No mobile CI jobs or Cloud source/XML checks are not a NativeAOT or device pass. No mobile CI jobs or
workflow changes are included. workflow changes are included.
For a supported Uno iOS NativeAOT toolchain, use the exact local/private package For a supported Uno iOS NativeAOT toolchain:
version (replace the placeholder):
```sh ```sh
dotnet publish e2e/Uno/HelloWorld/HelloWorld.csproj \ dotnet publish e2e/Uno/HelloWorld/HelloWorld.csproj \
-c Release -f net10.0-ios -r ios-arm64 \ -c Release -f net10.0-ios -r ios-arm64 \
-p:PrismNativeAotValidation=true \ -p:PrismNativeAotValidation=true
-p:PrismNativeAotContainerVersion=YOUR_MATCHING_LOCAL_VERSION
``` ```
[Uno 6.6 NativeAOT guidance](https://platform.uno/docs/articles/features/native-aot.html) [Uno 6.6 NativeAOT guidance](https://platform.uno/docs/articles/features/native-aot.html)
@@ -88,11 +84,11 @@ experimental XA1040 warning. For Android, use the same command with
`-f net10.0-android -r android-arm64` and inspect the warning and device results. `-f net10.0-android -r android-arm64` and inspect the warning and device results.
Never count an ordinary Android AOT build as NativeAOT validation. Never count an ordinary Android AOT build as NativeAOT validation.
For repeatable source-package preparation, follow the For optional unpublished source-package preparation, follow the
[real local container package commands](../../Maui/PrismMauiDemo/NativeAotValidation.md#build-the-real-local-container-packages). [real local container package commands](../../Maui/PrismMauiDemo/NativeAotValidation.md#build-the-real-local-container-packages).
Use both projects' normal supported TFMs, then add Use both projects' normal supported TFMs, then add
`-p:RestoreAdditionalProjectSources="$PRISM_CONTAINER_FEED"` to the publish `-p:RestoreAdditionalProjectSources="$PRISM_CONTAINER_FEED"` to the publish
command. The net10-only package used for cloud generator/core unit tests does command together with `-p:PrismNativeAotContainerVersion="$PRISM_CONTAINER_VERSION"`. The net10-only package used for cloud generator/core unit tests does
not establish a complete multi-target mobile restore or native execution pass. not establish a complete multi-target mobile restore or native execution pass.
The nested action checks bind `Context.ActionButton.Text`, `.Icon`, and `.Command` The nested action checks bind `Context.ActionButton.Text`, `.Icon`, and `.Command`