[release/8.0.1xx] Add escape hatch for publishing with SelfContained=true, but no RuntimeIdentifier.#37368
Merged
marcpopMSFT merged 1 commit intorelease/8.0.1xxfrom Jan 4, 2024
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
Member
|
@jonathanpeppers mind filling out the tactics approval template with the justification for including this? |
Member
|
@marcpopMSFT does the above look OK? Do I need to send mail? |
Member
|
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. |
Member
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
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.
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