dotnet / dotnet/msbuild

Make P2P negotiation aware of ReferenceOutputAssembly metadata

Open
#14,250 0 comments 0 reactions 0 assignees View on GitHub
backlog triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

See https://github.com/dotnet/sdk/pull/55109 and https://github.com/dotnet/skills/pull/853 for more details. The P2P negotiation today doesn't respect the ReferenceOutputAssembly metadata: https://github.com/dotnet/msbuild/blob/2bf11280b11f3cfc8b93728135ed8183cc602234/src/Tasks/Microsoft.Common.CurrentVersion.targets#L1756-L1977

It would be great to make it do so in order for P2Ps that don't depend on a referenced project's output to not need to set additional metadata like `SkipGetTargetFrameworkProperties` or `UndefineProperties=TargetFramework`.

There's not clear path here as even without depending on the primary project output, a TFM often needs to be selected. But overall, depending on users setting that additional metadata doesn't seem to fit nicely into newer efforts like natively supporting the NoTargets SDK.

Contributor guide

No contributing guide indexed for this repository

Research direction

Read the P2P negotiation logic in src/Tasks/Microsoft.Common.CurrentVersion.targets around lines 1756-1977, then review dotnet/sdk#55109 and dotnet/skills#853 for the surrounding behavior. Define how ReferenceOutputAssembly should affect negotiation and verify that projects not depending on a referenced output no longer need SkipGetTargetFrameworkProperties or UndefineProperties=TargetFramework.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.