Make P2P negotiation aware of ReferenceOutputAssembly metadata
- 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