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

Fix _AssemblyInTargetingPack value during servicing #95278

Merged
merged 3 commits into from
Nov 29, 2023

Conversation

ViktorHofer
Copy link
Member

@ViktorHofer ViktorHofer commented Nov 27, 2023

The _AssemblyInTargetingPack property in packaging.targets depends on IsNETCoreAppSrc or IsNetCoreAppRef which aren't defined until src/libraries/Directory.Build.targets is imported.

As packaging.targets is imported first, there's a property sequencing issue.

The fix is to move the _AssemblyInTargetingPack logic out of packaging.targets as that's code that is specific to targeting pack libraries which reside under src/libraries.

This fixes the issue that appeared in the release/8.0 branch in main.

The _AssemblyInTargetingPack property in packaging.targets depends on
`IsNETCoreAppSrc` or `IsNetCoreAppRef` which aren't defined until
src/libraries/Directory.Build.targets is imported.

As packaging.targets is imported first, there's a property sequencing
issue.

The fix is to move the ´_AssemblyInTargetingPack` logic out of
packaging.targets as that's code that is specific to targeting pack
libraries which reside under src/libraries.

This fixes the issue that appeared in the release/8.0 branch for main.
@ghost
Copy link

ghost commented Nov 27, 2023

Tagging subscribers to this area: @dotnet/area-infrastructure-libraries
See info in area-owners.md if you want to be subscribed.

Issue Details

The _AssemblyInTargetingPack property in packaging.targets depends on IsNETCoreAppSrc or IsNetCoreAppRef which aren't defined until src/libraries/Directory.Build.targets is imported.

As packaging.targets is imported first, there's a property sequencing issue.

The fix is to move the ´_AssemblyInTargetingPack` logic out of packaging.targets as that's code that is specific to targeting pack libraries which reside under src/libraries.

This fixes the issue that appeared in the release/8.0 branch for main.

Author: ViktorHofer
Assignees: ViktorHofer
Labels:

area-Infrastructure-libraries

Milestone: -

<_IsWindowsDesktopApp Condition="$(WindowsDesktopCoreAppLibrary.Contains('$(AssemblyName);'))">true</_IsWindowsDesktopApp>
<_IsAspNetCoreApp Condition="$(AspNetCoreAppLibrary.Contains('$(AssemblyName);'))">true</_IsAspNetCoreApp>
<_AssemblyInTargetingPack Condition="('$(IsNETCoreAppSrc)' == 'true' or '$(IsNetCoreAppRef)' == 'true' or '$(_IsAspNetCoreApp)' == 'true' or '$(_IsWindowsDesktopApp)' == 'true') and '$(TargetFrameworkIdentifier)' != '.NETFramework'">true</_AssemblyInTargetingPack>
<AssemblyVersion Condition="'$(_AssemblyInTargetingPack)' != 'true'">$(MajorVersion).$(MinorVersion).0.$(ServicingVersion)</AssemblyVersion>
Copy link
Member

Choose a reason for hiding this comment

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

Will this start applying the change to ref projects as well - and have we validated it does so correctly? I see we previously conditioned inclusion of packaging.targets on IsPackable which was only set in src projects and now this will apply to both src and ref. I haven't spotted a problem with that right now, and changing the version in both is the right thing. Just double check that things are working correctly with ref projects.

Copy link
Member Author

Choose a reason for hiding this comment

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

Good point, thanks for catching this. This logic also relies on the ServicingVersion property which is defaultedin packaging.targets and only changed in source projects, so only for packable projects. I think it's best to keep the conditions on this that we had previously. Any objection to that?

Copy link
Member

Choose a reason for hiding this comment

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

Out of curiosity - What kinds of problems will you look for in the ref projects, @ViktorHofer? What things could break with this change?

Copy link
Member Author

Choose a reason for hiding this comment

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

With the previous state of this PR, reference source projects would have had the following assembly version: 9.0.0. during servicing. So the last servicing digit would have been missing because ServicingVersion wasn't defined.

Copy link
Member

@carlossanlop carlossanlop left a comment

Choose a reason for hiding this comment

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

Assuming no problem found with ref projects, lgtm.

@ericstj
Copy link
Member

ericstj commented Nov 30, 2023

LGTM With the IsPackable condition this makes this change more of just refactoring and I'd expect it to be a noop for ref projects.

@github-actions github-actions bot locked and limited conversation to collaborators Dec 31, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants