Skip to content

Fix NonShipping casing for Xamarin.Android.Tools.AndroidSdk package - #11281

Merged
simonrozsival merged 1 commit into
mainfrom
jonathanpeppers/fix-nonshipping-casing
May 6, 2026
Merged

Fix NonShipping casing for Xamarin.Android.Tools.AndroidSdk package#11281
simonrozsival merged 1 commit into
mainfrom
jonathanpeppers/fix-nonshipping-casing

Conversation

@jonathanpeppers

@jonathanpeppers jonathanpeppers commented May 4, 2026

Copy link
Copy Markdown
Member

Description

darc gather-drop was downloading the Xamarin.Android.Tools.AndroidSdk package as if it were a "shipping" package, even though it was intended to be non-shipping.

The root cause is a casing mismatch in ManifestArtifactData. We had Nonshipping=true (lowercase 's'), but Arcade's ArtifactModel.NonShipping property looks up the key using nameof(NonShipping) (capital 'S'). During the build, this worked because MSBuildListSplitter.GetNamedProperties() creates a case-insensitive dictionary. However, when the manifest XML is later parsed back (by PublishBuildAssets to register in BAR, or by darc gather-drop), CreateAttributeDictionary() creates a case-sensitive dictionary, so the lookup for "NonShipping" fails to find "Nonshipping" and defaults to false (i.e., shipping).

Changes

  • Fixed casing: Nonshipping=true -> NonShipping=true
  • Removed the unused IsShipping="false" metadata, which is not read by Arcade's PackageArtifactModelFactory

Checklist

  • Useful description of why the change is necessary.
  • Links to issues fixed
  • Unit tests: N/A -- build infrastructure metadata fix

The ManifestArtifactData had "Nonshipping=true" (lowercase s), but
Arcade's ArtifactModel.NonShipping property looks up "NonShipping"
(capital S). During build, this worked because MSBuildListSplitter
creates a case-insensitive dictionary. However, when the manifest XML
is parsed back (by PublishBuildAssets or darc gather-drop),
CreateAttributeDictionary() creates a case-sensitive dictionary, so the
lookup fails and defaults to false (shipping).

Also removed the unused IsShipping="false" metadata, which is not read
by PackageArtifactModelFactory.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 4, 2026 18:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes packaging metadata for the Xamarin.Android.Tools.AndroidSdk NuGet so Arcade/BAR consumers classify it as non-shipping consistently during manifest round-trips.

Changes:

  • Corrects ManifestArtifactData from Nonshipping=true to NonShipping=true.
  • Removes the redundant IsShipping="false" metadata from the special-case ItemsToPush entry.
  • Keeps the existing packaging flow unchanged aside from the non-shipping classification fix for this package.

@jonathanpeppers

Copy link
Copy Markdown
Member Author

@jonathanpeppers
jonathanpeppers marked this pull request as draft May 5, 2026 13:36
@jonathanpeppers
jonathanpeppers marked this pull request as ready for review May 5, 2026 16:15
@jonathanpeppers jonathanpeppers added the ready-to-review This PR is ready to review/merge, I think any CI failures are just flaky (ignorable). label May 5, 2026
@jonathanpeppers

jonathanpeppers commented May 5, 2026

Copy link
Copy Markdown
Member Author

I queued the above build with pushXAPackagesToMaestro=false, because I didn't want it to publish packages.

Unfortunately, that is the only way to test, so I think we should just merge to test.

@simonrozsival
simonrozsival merged commit b48de81 into main May 6, 2026
8 of 9 checks passed
@simonrozsival
simonrozsival deleted the jonathanpeppers/fix-nonshipping-casing branch May 6, 2026 08:20
jonathanpeppers added a commit that referenced this pull request May 11, 2026
…11281)

The ManifestArtifactData had "Nonshipping=true" (lowercase s), but
Arcade's ArtifactModel.NonShipping property looks up "NonShipping"
(capital S). During build, this worked because MSBuildListSplitter
creates a case-insensitive dictionary. However, when the manifest XML
is parsed back (by PublishBuildAssets or darc gather-drop),
CreateAttributeDictionary() creates a case-sensitive dictionary, so the
lookup fails and defaults to false (shipping).

Also removed the unused IsShipping="false" metadata, which is not read
by PackageArtifactModelFactory.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rmarinho added a commit to dotnet/maui-labs that referenced this pull request Jun 3, 2026
The Xamarin.Android.Tools.AndroidSdk package is classified as
non-shipping by dotnet/android (see dotnet/android#11281, which
fixed the NonShipping metadata casing in May 2026). Non-shipping
packages publish to the dotnet11-transport Azure DevOps feed
rather than dotnet11, so the existing public feed list cannot
resolve the 1.0.179-ci.main.323 pin added in this branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rmarinho added a commit to dotnet/maui-labs that referenced this pull request Jun 3, 2026
The Xamarin.Android.Tools.AndroidSdk package is classified as
non-shipping by dotnet/android (see dotnet/android#11281, which
fixed the NonShipping metadata casing in May 2026). Non-shipping
packages publish to the dotnet11-transport Azure DevOps feed
rather than dotnet11, so the existing public feed list cannot
resolve the 1.0.179-ci.main.323 pin added in this branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 5, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

ready-to-review This PR is ready to review/merge, I think any CI failures are just flaky (ignorable).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants