Skip to content

fix(ci): escape RID separator in macOS debug pre-release publish (#366) - #371

Merged
SteveTeece merged 1 commit into
devfrom
fix/366-mac-build-rid-escape
Sep 2, 2026
Merged

fix(ci): escape RID separator in macOS debug pre-release publish (#366)#371
SteveTeece merged 1 commit into
devfrom
fix/366-mac-build-rid-escape

Conversation

@SteveTeece

Copy link
Copy Markdown
Owner

Problem

Issue #366 — the Build debug .app (macOS, dev) job of debug-pre-release.yml fails at the Publish unsigned universal .app step:

MSBUILD : error MSB1006: Property is not valid.
Switch: maccatalyst-arm64

Root cause

The step passed:

-p:RuntimeIdentifier="maccatalyst-x64;maccatalyst-arm64"

The double quotes only stop the shell from word-splitting on ;. MSBuild's own -p: switch parser independently treats ; as a property-list delimiter, so it parsed:

  • property 1 → RuntimeIdentifier=maccatalyst-x64
  • property 2 → maccatalyst-arm64 (no =) → MSB1006

Fix

Join the two RIDs with the MSBuild literal-semicolon escape %3B:

-p:RuntimeIdentifier=maccatalyst-x64%3Bmaccatalyst-arm64

MSBuild un-escapes %3B; inside the property value during parsing, producing the single value maccatalyst-x64;maccatalyst-arm64 that the xamarin-macios Mac Catalyst targets read as a universal (lipo'd x64 + arm64) build. Quotes are no longer needed and were dropped.

CLAUDE.md's description of the workflow is updated to match.

Verification

  • YAML parses; the folded run: scalar renders to a single-line command with %3B intact.
  • Workflow-only change (plus one doc line) — no application code touched, so the .NET build/test suite is unaffected.
  • End-to-end confirmation requires a manual workflow_dispatch run of Publish Dev Debug Builds on this branch / after merge.

🤖 Generated with Claude Code

The `build-mac-app` job passed `-p:RuntimeIdentifier="maccatalyst-x64;maccatalyst-arm64"`.
Shell quoting stops the shell from splitting on `;`, but MSBuild's own `-p:` switch
parser still treats `;` as a property-list delimiter, so it read `maccatalyst-arm64`
as a second, malformed property and failed:

    MSBUILD : error MSB1006: Property is not valid.
    Switch: maccatalyst-arm64

Join the two RIDs with the MSBuild literal-semicolon escape `%3B` instead. MSBuild
un-escapes it to `;` during property parsing, yielding the single property value
`maccatalyst-x64;maccatalyst-arm64` that the xamarin-macios targets read as a
universal (lipo'd x64 + arm64) build.

Also updates the CLAUDE.md description of the workflow to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@SteveTeece
SteveTeece merged commit eacbb0a into dev Sep 2, 2026
1 check passed
@SteveTeece
SteveTeece deleted the fix/366-mac-build-rid-escape branch September 2, 2026 22:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant