-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[release/8.0.1xx] Add escape hatch for publishing with SelfContained=true, but no RuntimeIdentifier. #37368
[release/8.0.1xx] Add escape hatch for publishing with SelfContained=true, but no RuntimeIdentifier. #37368
Conversation
…meIdentifier. This is identical to issue #33414 (allow PublishAot=true without RuntimeIdentifier), except for the SelfContained property instead of the PublishAot property. This adds an escape hatch for a sanity check when trying to publish with SelfContained=true, but without a RuntimeIdentifier, because the check is not valid when building universal apps for macOS and Mac Catalyst (the netX-macos and netX-maccatalyst target frameworks). When building such an app, the project file will set RuntimeIdentifiers (plural): <TargetFramework>net8.0-macos</TargetFramework> <RuntimeIdentifiers>osx-x64;osx-arm</RuntimeIdentifiers> and then during the build, the macOS SDK will run two inner builds, with RuntimeIdentifiers unset, and RuntimeIdentifier set to each of the rids (and at the end merge the result into a single app). The problem is that the outer build, where RuntimeIdentifiers is set, but RuntimeIdentifier isn't, triggers the sanity check if the developer sets SelfContained=true, and that fails the build. Note that SelfContained defaults to true if PublishTrimmed=true, which means that just setting PublishTrimmed=true also triggers the sanity check. Ref: dotnet/macios#19142
@jonathanpeppers mind filling out the tactics approval template with the justification for including this? |
@marcpopMSFT does the above look OK? Do I need to send mail? |
Let's give Rolf a chance to reply with any concerns (I don't imagine there will be) and then we can ping tactics. Note that for Feb, it just has to be approved and merged by mid Jan so we have time. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No concerns!
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
Description
Introduce a
$(AllowSelfContainedWithoutRuntimeIdentifier)
check, to avoid a build error.Projects that run on Android & macOS can be built via:
Where the Android (or macOS) workloads setup these projects to always be self-contained and target multiple architectures /
$(RuntimeIdentifiers)
.Customer Impact
Customers will not notice this change, but it allows us to improve the behavior between the Android/macOS workloads and the .NET SDK.
Bringing this change to .NET 8 allows us to:
Risk: low
The change itself is adding an MSBuild Condition that checks a property that is blank by default.
Backport of #36047 to release/8.0.1xx
/cc @marcpopMSFT @rolfbjarne