Skip to content
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

Merged
merged 1 commit into from
Jan 4, 2024

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Dec 6, 2023

Description

Introduce a $(AllowSelfContainedWithoutRuntimeIdentifier) check, to avoid a build error.

Projects that run on Android & macOS can be built via:

dotnet publish -f net8.0-android

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:

  • Use the same logic in .NET 9 workloads as .NET 8
  • Solves complications when building .NET 8 projects under a .NET 9 SDK

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

…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
@marcpopMSFT
Copy link
Member

@jonathanpeppers mind filling out the tactics approval template with the justification for including this?
@rolfbjarne let me know if you have any concerns taking this for servicing (8.0.102 Feb release).

@jonathanpeppers
Copy link
Member

@marcpopMSFT does the above look OK? Do I need to send mail?

@marcpopMSFT
Copy link
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.

Copy link
Member

@rolfbjarne rolfbjarne left a comment

Choose a reason for hiding this comment

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

No concerns!

@marcpopMSFT
Copy link
Member

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@marcpopMSFT marcpopMSFT removed the untriaged Request triage from a team member label Dec 15, 2023
@marcpopMSFT marcpopMSFT merged commit a97f1d4 into release/8.0.1xx Jan 4, 2024
@marcpopMSFT marcpopMSFT deleted the backport/pr-36047-to-release/8.0.1xx branch January 4, 2024 17:25
@marcpopMSFT marcpopMSFT added this to the 8.0.2 milestone Jan 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants