Graph cross targeting take two#4218
Conversation
|
Looks good! Only think I see is the |
f426692 to
d28acc0
Compare
rainersigwald
left a comment
There was a problem hiding this comment.
Some initial thoughts. Haven't looked at the hard parts (the C# code changes) yet.
rainersigwald
left a comment
There was a problem hiding this comment.
Reviewed tests. Several questions about graphs that did not match my expectations. Perhaps the reasons will emerge as I look at the implementation (next up).
|
Can you add some negative tests? Like "doesn't provide the correct metadata to understand the inner build" -- what's the failure look like? |
rainersigwald
left a comment
There was a problem hiding this comment.
Ok, my review is complete. Many comments, but the big conceptual thing I have is about the edge elision/promotion around non-graph-root outer builds.
rainersigwald
left a comment
There was a problem hiding this comment.
LGTM pending filing the overbuild bug.
Where it's visible by crosstargeting projects too.
It is confusing to have the same data accessible from ProjectGraphNode.GlobalProperties and ProjectGraphNode.ProjectInstance.GlobalProperties
Reimplementation of #4143 to address its issues by adding explicit nodes for inner builds instead of trying to hide their complexity away. It does so by imposing a contract on what crosstargeting means, and requiring the sdk to be self-descriptive about its crosstargeting structure (the property name of the inner build (e.g.
TargetFramework), and the property name of the inner build values (e.g.TargetFrameworks)).Future PRs: