-
Notifications
You must be signed in to change notification settings - Fork 201
Build RepositoryReferences as P2Ps and use NuGet's transitive P2P calculation #852
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
Conversation
…manual msbuild task
/azp run dotnet-unified-build-full |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run dotnet-unified-build-full |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run dotnet-unified-build-full |
Azure Pipelines successfully started running 1 pipeline(s). |
This one is ready. Failures are unrelated (dry run signing issue in aspnetcore and android leg that times out) |
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 https://dev.azure.com/dnceng-public/public/_build/results?buildId=1057706&view=results |
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 theResolveProjectReferences
SDK target.