Skip to content
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

Restoring a "dotnet new - Hello World" console app downloads 340 MBs of NuGet packages #16549

Closed
eerhardt opened this issue Feb 29, 2016 · 5 comments
Assignees
Labels
tenet-performance Performance related issue
Milestone

Comments

@eerhardt
Copy link
Member

To repro on a new machine (or delete your %userprofile%\.nuget\packages folder):

Expected Results

In all actuality, I expected the same .NET assemblies that I installed when I installed the dotnet cli to be used.

Actual Results

dotnet restore takes a while, and when it is finished my %userprofile%\.nuget\packages folder is 340 MB on disk.

Looking into this, a lot of the NuGet packages we download have xml files for every supported language, for multiple versions, and for multiple TFMs. For example:

System.Runtime.Extensions
|--- / 4.0.10
        |--- /ref
                |--- /dotnet
                        |--- /de
                                |--- /System.Runtime.Extensions.xml     325 KB
                        |--- /es
                        |--- /.. 7 other languages
                |--- /MonoAndroid10
                |--- /... 4 other TFMs
|--- / 4.1.0-rc2-23811
        |--- /ref
                |--- /dotnet5.1
                        |--- /de
                                |--- /System.Runtime.Extensions.xml     325 KB
                        |--- /es
                        |--- /.. 7 other languages
                |--- /... 11 other TFMs

System.Runtime.Extensions alone is 14.2 MB

@mellinoe
Copy link
Contributor

mellinoe commented Mar 1, 2016

What's the action item here, exactly? The CLI has its dependencies bundled in with the product, not in the package cache. That is going off the raw zip I downloaded earlier today, but I would guess that the MSI is the same.

@eerhardt
Copy link
Member Author

eerhardt commented Mar 1, 2016

I think the biggest/first action item would be to reduce the size of our packages. The example I show above is repeated for other packages. For example, there are two versions of System.Runtime which account for 84 MB on disk.

18 TFMs X 9 languages is making up a big part of the problem. Maybe one step we could do is create language specific packages. Each developer only cares about a single language. At most, they care about their native language and maybe English.

@ericstj
Copy link
Member

ericstj commented Mar 3, 2016

So currently intellisense has very strict rules for the layout of xml docs. @yishaigalatzer has requested feature here but I haven't heard if anything is happening.

NuGet had a feature to split docs out then they'd recompose at restore time, but that doesn't work with NuGet v3/project.json: NuGet/Home#2245.

You should see that the latest packages are closure-complete on the latest set so that will help reduce the number of duplicate packages downloaded.

@yishaigalatzer
Copy link

Let's revive the thread with core vs on this?

@weshaggard
Copy link
Member

I don't think there is really anything specifically actionable here so I'm closing. We will try and figure out if there is anything we can do to split out things from the packages but those would be individual separate issues.

@msftgits msftgits transferred this issue from dotnet/corefx Jan 31, 2020
@msftgits msftgits added this to the 1.0.0-rtm milestone Jan 31, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Jan 2, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
tenet-performance Performance related issue
Projects
None yet
Development

No branches or pull requests

6 participants