[release/10.0.1xx] [Xamarin.Android.Build.Tasks] Fix _CreateAar race under parallel build#11570
Open
jonathanpeppers wants to merge 1 commit into
Open
Conversation
#11527) Fixes: #11514 Under parallel build (`-m`), library projects with `<GeneratePackageOnBuild>true</GeneratePackageOnBuild>` can intermittently fail with: ``` error XARLP7024: System.IO.IOException: The process cannot access the file '.../<assembly>.aar' because it is being used by another process. at Microsoft.Android.Build.Tasks.Files.HashFile(...) at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(...) ``` The reporter's `mini.binlog` shows `_CreateAar` running in two distinct project instances of the same library csproj, and a local repro shows it running **three** times for a single `dotnet build`: * Once from `BuildDependsOn`. * Once from `_UpdateAndroidResourcesDependsOn` on the regular `Build` chain. * Once more from `_UpdateAndroidResourcesDependsOn` on a Pack-dispatched project instance entered via `_GetFrameworkAssemblyReferences` (NuGet pack's per-TFM inner-target dispatch). That instance has different global properties, so MSBuild does not dedupe it and may run it on a fresh worker node, opening a write/write or write/read race against consumers that read the `.aar` via `Files.HashFile`. `_UpdateAndroidResources` is the aapt2/resource-designer step; producing the publish artifact (`.aar`) is unrelated. Remove `_CreateAar` from `_UpdateAndroidResourcesDependsOn`. The AAR is still produced because `_CreateAar` remains in `BuildDependsOn` for non-application projects, and Pack depends on `Build`, so `dotnet build` and `dotnet pack` both still create it. This collapses the count to a single invocation per build, eliminating the race window and the redundant AAR rewrites at the root rather than papering over them with reader retries or atomic writes. Added `IncrementalBuildTest.CreateAarRunsOnceWithGeneratePackageOnBuild`: builds a library with `GeneratePackageOnBuild=true` at `LoggerVerbosity.Detailed` and asserts `Target "_CreateAar" in file ...` appears exactly once in the build log. Verified against the issue's repro project: count drops from **3 to 1** with the fix.
7ec2845 to
3059490
Compare
Member
Author
|
/azp run |
|
Azure Pipelines could not run because the pipeline triggers exclude this branch/path. |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR is described as a backport of the _CreateAar parallel-build race fix to release/10.0.1xx, but the diff contains a much broader set of changes across MSBuild targets, tasks, tests, native runtime, tooling, docs, and CI/pipeline configuration.
Changes:
- Adjusts build ordering so
_CreateAaris not pulled into theUpdateAndroidResourcesdependency chain (reducing redundant/parallel AAR writes). - Adds/updates Hot Reload + runtime environment variable plumbing (new targets, project capabilities, and a new
Microsoft.Android.Runtool fordotnet run). - Updates multiple runtime/tooling areas (NativeAOT init + env var behavior, assembly store naming, Android API level parsing/handling, build tools/pipelines/version bumps).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| Xamarin.Android.sln | Adds Microsoft.Android.Run project to the solution. |
| tools/workload-dependencies/WorkloadDependencies.proj | Updates Android manifest feed from d17.12 to d18.0. |
| tools/assembly-store-reader-mk2/Main.cs | Updates CLI help text for new assembly-store naming. |
| tools/assembly-store-reader-mk2/AssemblyStore/StoreReader_V2.cs | Updates V2 store reader to use libassembly-store.so. |
| tests/StartupHook/StartupHook.csproj | Adds new StartupHook test project. |
| tests/StartupHook/StartupHook.cs | Implements a simple startup hook used by tests. |
| tests/Mono.Android-Tests/Mono.Android-Tests/Xamarin.Android.Net/AndroidMessageHandlerTests.cs | Adds regression test for rewinding content stream after cancellation. |
| tests/Mono.Android-Tests/Mono.Android-Tests/System/StartupHookTest.cs | Adds tests validating StartupHook feature + environment configuration. |
| tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj | Enables startup hook support in tests and adds StartupHook project/reference/config. |
| tests/Mono.Android-Tests/Mono.Android-Tests/hotreload.env | Adds test env file setting DOTNET_STARTUP_HOOKS. |
| tests/Mono.Android-Tests/Mono.Android-Tests/Android.Widget/CustomWidgetTests.cs | Adds regression test for global-ref leaks when inflating custom views. |
| src/Xamarin.Android.Build.Tasks/Xamarin.Android.Tooling.targets | Renames task parameter usage to AndroidApiLevel. |
| src/Xamarin.Android.Build.Tasks/Xamarin.Android.Application.targets | Adds --user support when launching/starting apps via adb. |
| src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs | Improves parsing of runtime config JSON properties into strings. |
| src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs | Adds TryParseApiLevel and GetNormalizedNativeLibraryName helpers. |
| src/Xamarin.Android.Build.Tasks/Utilities/JCWGenerator.cs | Removes unused androidSdkPlatform parameter from JCW generation path. |
| src/Xamarin.Android.Build.Tasks/Utilities/EnvironmentBuilder.cs | Escapes backslashes in generated assembler strings. |
| src/Xamarin.Android.Build.Tasks/Utilities/ELFHelper.cs | Changes ELF segment alignment validation rules. |
| src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs | Changes generated assembly store output filename. |
| src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigNativeAssemblyGeneratorCLR.cs | Adds JNI preload ignore/always-preload lists and related logic for CLR. |
| src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfigNativeAssemblyGenerator.cs | Mirrors JNI preload ignore/always-preload changes for non-CLR path. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Utilities/FileSystemUtils.cs | Caches the NuGet global-packages folder lookup. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Forms/MainActivity.cs | Adjusts template marker placement for test code injection. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/ProjectBuilder.cs | Exposes BuiltBefore state publicly and updates usage. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs | Adds reusable process execution + new run/watch helpers; improves output handling. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidItem.cs | Adds AndroidNativeLibraryNoJniPreload test item type. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidBuildActions.cs | Adds AndroidNativeLibraryNoJniPreload build action constant. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs | Disables EOL workload checking for net9.0-android test cases. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckGoogleSdkRequirementsTests.cs | Updates tests to use new AndroidApiLevel task property and adjusts assertions. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/AndroidResourceTests.cs | Adds additional adaptive icon resource cases using raw string literals. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/InvalidConfigTests.cs | Updates fast-deploy support property name used in tests. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs | Adds regression test asserting _CreateAar executes once with GeneratePackageOnBuild=true. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs | Adds transitive multi-TFM reference regression test for JCW generation. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs | Injects additional code into template to prevent warnings regression. |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs | Expands/adjusts design-time build test and fast-deploy support property usage. |
| src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs | Formats AndroidApiLevel from TargetPlatformVersion with invariant culture and minor support. |
| src/Xamarin.Android.Build.Tasks/Tasks/ReadAndroidManifest.cs | Uses parsed API level for optional uses-library jar resolution. |
| src/Xamarin.Android.Build.Tasks/Tasks/GetJavaPlatformJar.cs | Renames AndroidSdkPlatform to AndroidApiLevel and improves preview API handling. |
| src/Xamarin.Android.Build.Tasks/Tasks/GetAotArguments.cs | Uses TryParseApiLevel when deriving NDK API level. |
| src/Xamarin.Android.Build.Tasks/Tasks/GetAndroidDefineConstants.cs | Switches Android API level to string and adds minor-version define constants. |
| src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeApplicationConfigSources.cs | Adds runtime selection + conditional env var generation and JNI preload lists. |
| src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeAotEnvironmentAssemblerSources.cs | Clears env vars for NativeAOT (Java sets them) and removes Debug property. |
| src/Xamarin.Android.Build.Tasks/Tasks/GenerateMainAndroidManifest.cs | Renames target SDK input to AndroidApiLevel and normalizes to major-only for manifest. |
| src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs | Removes AndroidSdkPlatform required property usage for JCW generation. |
| src/Xamarin.Android.Build.Tasks/Tasks/GenerateAdditionalProviderSources.cs | Generates additional NativeAOT Java source for environment variables. |
| src/Xamarin.Android.Build.Tasks/Tasks/CreateAssemblyStore.cs | Updates doc comment about the assembly store output. |
| src/Xamarin.Android.Build.Tasks/Tasks/CollectRuntimeConfigFilesForArchive.cs | Updates comment for new store naming adjacency. |
| src/Xamarin.Android.Build.Tasks/Tasks/CheckGoogleSdkRequirements.cs | Simplifies inputs to required AndroidApiLevel and improves defaults. |
| src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs | Loads assemblies by exact path to avoid wrong-TFM resolution. |
| src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Link.cs | Renames AndroidSdkPlatform to AndroidApiLevel and uses SupportedOSPlatformVersion for min SDK if missing. |
| src/Xamarin.Android.Build.Tasks/Tasks/Aapt2.cs | Adds SupportedOSPlatformVersion property for downstream tasks. |
| src/Xamarin.Android.Build.Tasks/Resources/NativeAotRuntimeProvider.java | Initializes NativeAotEnvironmentVars on provider construction. |
| src/Xamarin.Android.Build.Tasks/Resources/NativeAotEnvironmentVars.java | Adds new Java helper to set environment variables via Os.setenv. |
| src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets | Uses $(MSBuildProjectFullPath) as stamp file for referenced resource dirs. |
| src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets | Passes SupportedOSPlatformVersion and renames AndroidSdkPlatform arg. |
| src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.targets | Adds net9.0-android EOL metadata and workaround for RID publish behavior. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.Tooling.targets | Updates CheckGoogleSdkRequirements argument name. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.ProjectCapabilities.targets | Adds capabilities for Hot Reload websocket + runtime env var support. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.NativeAOT.targets | Quotes linker args consistently and removes Debug property from env asm task call. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.HotReload.targets | Adds new MSBuild targets for Hot Reload env + adb reverse configuration. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets | Sets UseDefaultPublishRuntimeIdentifier=false, adds _AndroidFastDeploymentSupported, moves StartupHookSupport defaulting. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets | Removes _CreateAar from UpdateAndroidResources chain and adjusts build/run/deploy ordering. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets | Hooks Hot Reload environment target into _ResolveAssemblies and publishes hot reload agent DLL. |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.Application.targets | Adds device enumeration target and switches dotnet run to Microsoft.Android.Run by default (WaitForExit). |
| src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.After.targets | Imports Hot Reload targets for application projects. |
| src/native/nativeaot/include/host/host-nativeaot.hh | Extends NativeAOT host init signature to accept JnienvInitializeArgs*. |
| src/native/nativeaot/include/host/host-jni.hh | Updates exported init function signature to include init args struct. |
| src/native/nativeaot/host/host.cc | Initializes override dir/logging and returns log categories via init args. |
| src/native/nativeaot/host/host-jni.cc | Threads init args through to host init. |
| src/native/native.targets | Adds CMake target to build a test JNI library. |
| src/native/mono/pinvoke-override/pinvoke-override-api-impl.hh | Fixes log message argument ordering. |
| src/native/mono/monodroid/embedded-assemblies.hh | Updates assembly store shared library naming. |
| src/native/common/test-jni-library/stub.cc | Adds minimal JNI_OnLoad stub for preload-related testing. |
| src/native/common/test-jni-library/CMakeLists.txt | Adds CMake recipe for building the test JNI shared library. |
| src/native/common/include/managed-interface.hh | Extends init args struct with uncaught exception propagation function pointer. |
| src/native/CMakePresets.json.in | Adds XA_TEST_OUTPUT_DIR preset variable. |
| src/native/CMakeLists.txt | Requires XA_TEST_OUTPUT_DIR and adds new build mode for test JNI library. |
| src/native/clr/runtime-base/logger.cc | Refactors file-opening for reference logging into Logger helpers. |
| src/native/clr/include/runtime-base/logger.hh | Declares new Logger file-open helper overloads. |
| src/native/clr/include/host/pinvoke-override-impl.hh | Fixes log message argument ordering. |
| src/native/clr/include/host/os-bridge.hh | Adjusts gref/lref logging function signatures and internal helpers. |
| src/native/clr/include/host/host.hh | Adds unmanaged uncaught exception propagation hook pointer/storage. |
| src/native/clr/include/constants.hh | Updates assembly store file name constant. |
| src/native/clr/host/internal-pinvokes-shared.cc | Adapts to new OSBridge gref/lref logging signatures. |
| src/native/clr/host/host.cc | Initializes reference logging earlier and wires uncaught exception propagation delegate. |
| src/native/clr/host/host-jni.cc | Implements Runtime.propagateUncaughtException forwarding to native/managed hook. |
| src/native/clr/host/bridge-processing.cc | Updates gref/weakref logging call signatures and whitespace cleanup. |
| src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs | Ensures request content stream is rewound via finally, even on exceptions/cancellation. |
| src/Mono.Android/Microsoft.Android.Runtime/RuntimeFeature.cs | Adds StartupHookSupport feature switch backing System.StartupHookProvider.IsSupported. |
| src/Mono.Android/metadata | Adds Color return/parameter mapping for new android.graphics.pdf.component APIs (36.1). |
| src/Mono.Android/Android.Runtime/JNIEnvInit.cs | Adds unmanaged callback for propagating uncaught exceptions and startup hook execution logic for CoreCLR. |
| src/Mono.Android/Android.Runtime/JNIEnv.cs | Raises unhandled exception event for CoreCLR runtime path. |
| src/Mono.Android/Android.Runtime/AndroidRuntime.cs | Allows managed unhandled-exception raiser to mark exception as handled before JNI transition. |
| src/Mono.Android/Android.Runtime/AndroidEnvironment.cs | Refactors unhandled exception raising into TryRaiseUnhandledException. |
| src/Microsoft.Android.Sdk.ILLink/Microsoft.Android.Sdk.ILLink.csproj | Updates ILLink package property name reference. |
| src/Microsoft.Android.Runtime.NativeAOT/Android.Runtime.NativeAOT/JavaInteropRuntime.cs | Updates NativeAOT init to populate init args, early logging category init, and pass init args to managed init. |
| src/Microsoft.Android.Run/Microsoft.Android.Run.csproj | Adds new Microsoft.Android.Run tool project. |
| NuGet.config | Updates dependency-flow package sources (removes manual feeds, adds runtime feed). |
| global.json | Updates MSBuild SDK versions (NoTargets/Arcade). |
| external/xamarin-android-tools.override.props | Updates restore additional sources feed. |
| external/Java.Interop.override.props | Updates restore additional sources feed. |
| external/debugger-libs.override.props | Updates restore additional sources feed. |
| eng/Versions.props | Updates .NET SDK, ILLink, ref pack, and manifest versions/bands. |
| eng/Version.Details.xml | Updates dependency versions/SHAs and adds workload manifest dependencies. |
| Documentation/project-docs/ApkSharedLibraries.md | Updates assembly store filename examples. |
| Documentation/docs-mobile/building-apps/build-targets.md | Documents ComputeAvailableDevices target. |
| Documentation/docs-mobile/building-apps/build-properties.md | Documents AndroidIgnoreAllJniPreload, Device, and WaitForExit. |
| Documentation/docs-mobile/building-apps/build-items.md | Documents AndroidNativeLibraryNoJniPreload and RuntimeEnvironmentVariable item. |
| Directory.Build.targets | Pins Microsoft.SourceLink.GitHub version via PackageReference Update. |
| Directory.Build.props | Updates bootstrap task assembly paths and pack version properties. |
| Configuration.props | Adds stable API level 36.1 and updates unstable platform id defaulting. |
| build-tools/xaprepare/xaprepare/xaprepare.targets | Adds @TestOutputDirectory@ placeholder replacement. |
| build-tools/xaprepare/xaprepare/Steps/Step_InstallDotNetPreview.cs | Adds retry/backoff for restoring runtime packs. |
| build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs | Passes @XA_TEST_OUTPUT_DIR@ into CMake presets generation. |
| build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs | Marks 36.1 platform as latest stable. |
| build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs | Marks 36.1 platform as stable in build platform list. |
| build-tools/xaprepare/xaprepare/Application/Properties.Defaults.cs.in | Adds TestOutputDirectory to default generated properties. |
| build-tools/xaprepare/xaprepare/Application/ProcessRunner.cs | Kills entire process tree on timeout. |
| build-tools/xaprepare/xaprepare/Application/KnownProperties.cs | Adds TestOutputDirectory known property. |
| build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/JdkInfo.cs | Makes CreateTaskLogger internal for reuse by other tasks. |
| build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/GenerateSupportedPlatforms.cs | Updates supported-platform props generation to handle major/minor API levels. |
| build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CreateFrameworkList.cs | Forces ProcessorArchitecture to MSIL in generated framework list. |
| build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CodeGenDiff.cs | Adds logging, improves parsing robustness, and updates signature to accept a logger. |
| build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs | Passes task logger into CodeGenDiff. |
| build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj | Switches target framework to $(DotNetStableTargetFramework). |
| build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/HashFileContents.cs | Replaces HashAlgorithm.Create with explicit algorithm selection. |
| build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/DownloadUri.cs | Adds retry logic and updates TLS revocation handling to match Arcade’s approach. |
| build-tools/xa-prep-tasks/xa-prep-tasks.csproj | Switches target framework to $(DotNetStableTargetFramework). |
| build-tools/scripts/XAVersionInfo.targets | Changes pack/MSI version computation and logs computed version info. |
| build-tools/manifest-attribute-codegen/README.md | Updates instructions to use dotnet-local. |
| build-tools/manifest-attribute-codegen/metadata.xml | Ignores new manifest node types related to “purpose”. |
| build-tools/manifest-attribute-codegen/manifest-definition.xml | Updates API levels to 36.1 and adds new manifest elements/attrs. |
| build-tools/manifest-attribute-codegen/manifest-attribute-codegen.csproj | Adjusts codegen exec invocation to use $(TargetPath) + response-file args. |
| build-tools/create-packs/Microsoft.Android.Sdk.proj | Packages Microsoft.Android.Run tool into SDK pack. |
| build-tools/create-packs/Directory.Build.targets | Adjusts version replacements and non-shipping metadata for AndroidSdk package. |
| build-tools/banned-apis/banned-apis.targets | Updates BannedApiAnalyzers package version. |
| build-tools/automation/yaml-templates/variables.yaml | Updates agent arch/platform variables and adds DOTNET_* env settings. |
| build-tools/automation/yaml-templates/run-sliced-nunit-tests.yaml | Adds hanging-process diagnostics template before running slicer retry. |
| build-tools/automation/yaml-templates/run-nunit-tests.yaml | Adds hanging-process diagnostics template prior to kill-processes. |
| build-tools/automation/yaml-templates/install-microbuild-tooling.yaml | Moves signType selection logic into template conditions. |
| build-tools/automation/yaml-templates/diagnose-hanging-processes.yaml | Adds new diagnostics template for hung processes (macOS/Linux/Windows). |
| build-tools/automation/yaml-templates/commercial-build.yaml | Updates signing condition to match release/non-PR official pipeline criteria. |
| build-tools/automation/yaml-templates/build-macos.yaml | Updates macOS pool demand to use macOS.Architecture. |
| build-tools/automation/azure-pipelines.yaml | Updates MAUI ref, official/unofficial selection, signing, and adds PublicApiType override. |
| build-tools/automation/azure-pipelines-nightly.yaml | Updates macOS pool demand to use macOS.Architecture. |
| build-tools/automation/azure-pipelines-apidocs.yaml | Updates macOS pool demand to use macOS.Architecture. |
| .gitmodules | Points Java.Interop submodule branch to release/10.0.1xx. |
| .github/copilot-instructions.md | Updates branch target info to .NET 11 and adds test file-modification guidance. |
| .github/CODEOWNERS | Updates default codeowner set. |
| .external | Updates android-platform-support external ref sha. |
| .azuredevops/policies/branchClassification.yml | Adds branch classification policy config for production branches. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #11527 to
release/10.0.1xx.Fixes: #11514
Why
Under parallel build (
-m), library projects with<GeneratePackageOnBuild>true</GeneratePackageOnBuild>can intermittently fail with:_CreateAarwas running multiple times for a singledotnet build:BuildDependsOn._UpdateAndroidResourcesDependsOnon the regularBuildchain._UpdateAndroidResourcesDependsOnon a Pack-dispatched project instance entered via_GetFrameworkAssemblyReferences(NuGet pack's per-TFM inner-target dispatch). That instance has different global properties, so MSBuild does not dedupe it and may run it on a fresh worker node, opening a write/write or write/read race against consumers that read the.aarviaFiles.HashFile.Approach
_UpdateAndroidResourcesis the aapt2/resource-designer step; producing the publish artifact (.aar) is unrelated. Remove_CreateAarfrom_UpdateAndroidResourcesDependsOn. The AAR is still produced because_CreateAarremains inBuildDependsOnfor non-application projects, and Pack depends onBuild, sodotnet buildanddotnet packboth still create it.Conflicts
Minor merge conflict in
IncrementalBuildTest.csbecauseManifestMergerIncrementalonrelease/10.0.1xxdoesn't take the[Values] AndroidRuntime runtimeparameter that exists onmain. Resolved by adding the new test before the existingManifestMergerIncremental ()signature.