-
Notifications
You must be signed in to change notification settings - Fork 391
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
Design-time build only provides top-level package/project dependencies, sourcing transitive references from project.assets.json #3435
Comments
At last weekly sync up, there was talk that this would probably be pushed out to 15.8. The sdk side is currently scheduled for 2.1.4xx. At the earliest it could be pulled into 2.1.3xx, but I think we're pretty booked up at this point. cc @livarcocc |
Okay - thanks for the heads up. I think it's too bad to not do more here in 15.7, but I guess there is at least the hammer option that you can turn Dependencies node off entirely with targets files. |
One of the potential quick workarounds would be to change SDK in such a way that it send same data , but only for top level dependencies, as there no lower level hierarchies at all. This would not require project system changes, only sdk. Keep this change off by default and add an option to turn on this workaround for people who wants it. |
We will break this down into tasks and assign those tasks to 16.5 and 16.6. |
This work is underway. Capturing design notes here for posterity.
|
In the notes above @abpiskunov wrote:
@nguerrera @davkean and others, two questions around this:
If the answers are "yes" and "no" respectively, then we can create a globally scoped cache of this data and not need to worry about updating contents within. I suspect the answer to question 1 is "no" however, considering the case where a package's child references are conditioned on something that can differ from project to project, in which case its graph would vary between projects. |
PrivateAssets, ExcludeAssets, IncludeAssets can all affect a resulting package's data in the assets file for a given project.
If the package is resolved from a different source, it could be different, but I probably would worry about that case. |
In that case:
|
This is progressing smoothly, with work happening on the It's using I also need to think through whether we need to change the public API here, specifically considering WebTools dependencies (npm/bower). |
How often you see different data for the same package? once in a while or very often? Depending on that sharing package would save huge amount of memory. Also you could consider a "flyweight" share package metadata, but allow projects have some metadata that could override/be different? |
@abpiskunov that's proposed in #3335. With the current work we will only eagerly populate hierarchy items, and there's little data to share there. For transitive dependencies, these are lazily populated as the user expands. We could share nodes, but I suspect that for 99.99% of sessions there'd be no noticeable benefit. There will be an up-front cost for de-duping nodes too, but that might not be too great. Flyweight is interesting and I'll take a look to see if it'd help. We're removing redundant metadata from task items, and CPS is pretty good at keeping the sizes of snapshots down using shared key dictionaries. |
PR for the SDK changes is up: dotnet/sdk#11358 |
Project system half of dotnet/sdk#2100:
Notes from @abpiskunov from our meeting:
cc @Pilchie @davkean @abpiskunov
The text was updated successfully, but these errors were encountered: