8000 Build RepositoryReferences as P2Ps and use NuGet's transitive P2P calculation by ViktorHofer · Pull Request #852 · dotnet/dotnet · GitHub
[go: up one dir, main page]

Skip to content

Conversation

ViktorHofer
Copy link
Member
@ViktorHofer ViktorHofer commented May 28, 2025

Continuation of 1801a22

This improves scheduling the inner repos and with that reduces the overall build time by getting runtime (which is on the hot path) to start to build earlier. Additionally, this makes the VMR build more aligned with the rest of the product by using P2Ps to build dependencies.


NuGet is responsible for calculating transitive project references in general. A project's project.assets.json file contains a node for the transitive p2ps. At build time a target then runs that reads that information and adds the transitive p2ps to an item group so that transitives are also getting built as part of the ResolveProjectReferences target. That's how the product works.

In the VMR we weren't defining P2P for the repo projects and therefore we never had that information available in the "default" way. Instead we had a custom target that retrieved that information. My PR basically removes that custom target and gets us onto the common path. Of course with some additional complexity... mostly because of BuildPass stuff.

The PR also removes the BuildRepoReferences target as we now build RepositoryReference items as P2Ps directly and rely on the ResolveProjectReferences SDK target.

@ViktorHofer
Copy link
Member Author

/azp run dotnet-unified-build-full

Copy link
Azure Pipelines successfully started running 1 pipeline(s).

@ViktorHofer
Copy link
Member Author

/azp run dotnet-unified-build-full

Copy link
Azure Pipelines successfully started running 1 pipeline(s).

@ViktorHofer
Copy link
Member Author

/azp run dotnet-unified-build-full

@ViktorHofer ViktorHofer marked this pull request as ready for review June 3, 2025 09:18
@ViktorHofer ViktorHofer requested review from a team as code owners June 3, 2025 09:18
Copy link
Azure Pipelines successfully started running 1 pipeline(s).

@ViktorHofer
Copy link
Member Author
ViktorHofer commented Jun 3, 2025

This one is ready. Failures are unrelated (dry run signing issue in aspnetcore and android leg that times out)

@ViktorHofer ViktorHofer changed the title Use P2Ps transitive calcuation (from project.assets.json) instead of … Build RepositoryReferences as P2Ps and use NuGet's transitive P2P calcuation Jun 3, 2025
@ViktorHofer ViktorHofer changed the title Build RepositoryReferences as P2Ps and use NuGet's transitive P2P calcuation Build RepositoryReferences as P2Ps and use NuGet's transitive P2P calculation Jun 3, 2025
@akoeplinger
Copy link
Member
akoeplinger commented Jun 4, 2025

Failures are unrelated

I trust you but given we haven't tested the later build passes here and you're touching them, mind running an official build (with signing disabled) to validate it?

@ViktorHofer
Copy link
Member Author
ViktorHofer commented Jun 4, 2025

I trust you but given we haven't tested the later build passes here and you're touching them, mind running an official build (with signing disabled) to validate it?

I ran the dotnet-unified-build-full pipeline in this PR and inspected the win-x64 BuildPass2 binlog. I couldn't find any regressions. The last two commits are just clean-up (adding comments and removing non necessary code) and shouldn't affect execution.

https://dev.azure.com/dnceng-public/public/_build/results?buildId=1057706&view=results

@ViktorHofer ViktorHofer requested a review from akoeplinger June 4, 2025 11:09
@ViktorHofer ViktorHofer merged commit 5fd4e03 into main Jun 4, 2025
8 of 10 checks passed
@ViktorHofer ViktorHofer deleted the UseP2PsForTransitivesCalculation branch June 4, 2025 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0