ci: set Mac universal RIDs in the app csproj, not on the publish CLI - #374
Merged
Merged
Conversation
Passing -p:RuntimeIdentifiers=maccatalyst-x64%3Bmaccatalyst-arm64 on the command line made it a global property that propagated verbatim to every ProjectReference. The plain net10.0 class libraries (Core, Data, UI, Plugins.Contracts, Reports) then failed with NETSDK1083 on the joined ';'-list. Instead, add a conditional PropertyGroup to StageFright.App.csproj that sets the plural <RuntimeIdentifiers> only when -p:PublishMacUniversal=true is passed for a maccatalyst TFM, and have the workflow pass that flag. As a project property it is evaluated locally and MAUI's Mac Catalyst targets fan out per-RID inner builds that hand a single concrete RID to the referenced libraries. This mirrors dotnet/maui's own Controls.TestCases.HostApp.csproj CI pattern. The group is inert for every normal local/CI build, so single-arch Debug builds and `dotnet run` are unaffected. Verified: dotnet build src/StageFright.App (Debug, net10.0-windows) still succeeds with 0 warnings/errors - the new group stays dormant off-target. The universal maccatalyst build itself can only be exercised by re-running the workflow on a macOS runner. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
MoneyFormatter.FormatCore delegated the negative-amount representation
entirely to CultureInfo.CurrentCulture, so a stored AUD figure rendered
"-$42.10" on an en-AU/en-US host but "($42.10)" under the invariant
culture that CI hosts default to. That broke the spec 028 FR-006 / SC-004
zero-drift regression (AudZeroDriftTests) on CI while passing locally.
FormatCore now sets NumberFormatInfo.CurrencyNegativePattern to the
leading/trailing-minus form matching the active culture's symbol
placement (never accounting-style parentheses). Positive formatting,
grouping, separators and symbol placement are unchanged; fr-FR still
trails the symbol ("-42,10 $"). AUD output is now byte-identical to the
pre-028 string on every host.
Adds MoneyFormatterTests coverage pinning en-AU / en-US / invariant /
fr-FR. Updates CLAUDE.md and specs/028 plan.md.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Problem
After #372 (which switched the macOS
debug-pre-release.ymlpublish step to the plural-p:RuntimeIdentifiers=), the job still fails — now withNETSDK1083on the five class-libraryProjectReferences (Core,Plugins.Contracts,Reports,UI,Data) instead of the app project:Root cause:
-p:RuntimeIdentifiers=on the command line is an MSBuild global property, so the rawmaccatalyst-x64;maccatalyst-arm64string propagates verbatim into every referenced project. The plainnet10.0class libraries can't resolve that as a RID.Fix
src/StageFright.App/StageFright.App.csproj— add a conditional<PropertyGroup>that sets the plural<RuntimeIdentifiers>maccatalyst-x64;maccatalyst-arm64</RuntimeIdentifiers>only when-p:PublishMacUniversal=trueis passed for amaccatalystTFM. As a project (non-global) property, MAUI's Mac Catalyst targets fan out per-RID inner builds that hand a single concrete RID to the referenced libraries. Mirrors dotnet/maui's ownControls.TestCases.HostApp.csprojCI pattern. Inert for every normal local/CI build — single-arch Debug builds anddotnet runare unaffected..github/workflows/debug-pre-release.yml— publish step passes-p:PublishMacUniversal=trueinstead of the CLI RID list; comment rewritten.CLAUDE.md— updated the RID note; the app csproj now carries two inert-by-default conditionalPropertyGroups (RuntimeIdentifierOverridefor Windows,PublishMacUniversalfor Mac).Verification
dotnet build src/StageFright.App/StageFright.App.csproj -c Debug(net10.0-windows) succeeds with 0 warnings / 0 errors; the new group stays dormant off-target. The universal maccatalyst build itself can only be exercised by re-running the workflow on a macOS runner.🤖 Generated with Claude Code